Managed peer-to-peer applications, systems and methods for distributed data access and storage

ABSTRACT

Applications, systems and methods for securely and remotely operating a remote computer from a local computer over a network while providing seamless, firewall-compliant connectivity. Secure and remote operation includes authenticating at least one remote computer for connection to at least one computer over the network and/or at least one local computer for connection to at least one remote computer over the network; establishing a secure connection between the at least one local computer and the at least one remote computer over the network; and integrating a desktop of at least one remote computer on a display of at least one local computer. The connections may be made over a public network, as well as through multiple firewalls without loss of functionality.

The present application is a Continuation-In-Part of co-pending U.S.application Ser. No. 10/300,500 filed Nov. 19, 2002, which is aContinuation-In-Part of U.S. application Ser. No. 09/608,685, filed Jun.29, 2000, now U.S. Pat. No. 6,732,158, which is a Continuation-In-Partof U.S. application Ser. No. 09/454,178, filed Dec. 2, 1999, now U.S.Pat. No. 6,499,054. The present application also claims priority to U.S.Provisional Patent Application Ser. No. 60/520,481 filed Nov. 14, 2003.Further, the present application claims priority to U.S. ProvisionalApplication No. 60/331,642 Filed on Nov. 20, 2001 via the claim topriority of the same by U.S. application Ser. No. 10/300,500. Each ofthe afore-mentioned applications and patents are hereby incorporatedherein, in their entireties, be reference thereto.

BACKGROUND OF THE INVENTION

Currently, computer systems that run application programs such as wordprocessor, photo editor or spread sheet applications may utilize localstorage devices with magnetic or optical storage media for data accessand repository. Another approach is to mount a remote storage device tothe local system. This can be done using standard Server Message Block(SMB) or also currently known as Common Internet File System (CIFS)protocol to facilitate drive sharing over a computer network. In a localscenario, a user may use a first computer to run an application that mayretrieve and store data on a storage device that is local to the firstcomputer. Alternatively, the user may mount a remote storage device(which may be local to a second computer on the network) on the firstcomputer, such that the user can run the application to retrieve andstore data on the remote storage device. As a result, the user is notrequired to reside and use the second computer to access, read, write,and/or print data such as such as documents, pictures or music filesstored in a storage device local to the second computer. In a typicalscenario, both the first and second computers described are located in alocal area network connected via a high-speed data link such asEthernet, USB, WIFI, or the like.

In both the examples described above, applications on the first computerare primarily designed to rely on having a high-performance (i.e. highbandwidth, low latency) data access to the local and remote storagedevices. As a result, many applications do not have optimized dataaccess capabilities because they have insignificant effects on theoverall performance of the applications in a high-performance dataaccess environment. For example, the application may query the remotestorage device to read or write blocks of data through numerous roundsof serial local network trips. As another example, if the user instructsthe application to save the application data (e.g., which may be adocument, digital photo, spreadsheet, multimedia data, etc.) on astorage device, the application may do so by rewriting the entireapplication file without determining which part of the file actuallyneeds modifications in comparison to a previously existing file that thecurrent storage operation is replacing. Because the computers havehigh-performance data access capability, the user may not notice anysignificant performance differences in how the application utilizes theremote storage device. Hence, for many applications, having ahigh-performance data access to storage devices is critically importantfor proper program execution such as for temporary storage to storeintermediate computation results or to ensure reliability of datatransactions.

These current techniques, however can be impractical to deploy over awide area network such as the public Internet. In a local area network,high bandwidth and low latency data network pipes between the computersdescribed above can be provided at relatively low cost. A typicalEthernet local area network can facilitate 100 mbps for both upload anddownload data transfer rate. However, if those computers were located atdifferent locations in a wide area network such as the public Internet,there would be recurring charges associated with the telecommunicationservices that would normally be based on bandwidth utilization. As aresult, relatively large costs would be required to run existingapplications on the first computer with the same or similarhigh-performance data access to the remote storage device associatedwith the second computer over a wide area network. Further, it is oftennot even possible to connect the first and second computers with suchhigh-performance data access capability, depending upon the geographicallocations of the first and second computers, and publicly available IPaddresses.

The Internet has made large amounts of information available to computerusers around the world. A tremendous amount of information is exchangedbetween individual users via public computer networks, e.g., theInternet, and the volume of such information will likely continue toincrease. Additionally, the number and variety of communications devicescapable of accessing the Internet, as well as other wide area networksnot connected to the Internet are increasing rapidly, as are the numberand variety of networks independent of the Internet, and the complexity,size and breadth of the Internet itself.

Since many of these devices operate upon different standards foroperating systems as well as even connection and transmission softwares,a result is that it is becoming increasingly complicated and difficultto share files or transfer files from one device to another. Forexample, it is no simple task for a user to transfer electronic imagesfrom a home library of still images of his family, stored on a harddrive of a personal computer (PC), for example, to a personal digitalassistant (PDA) to show them to relatives when traveling to their home.While it is possible to upload digitized photos to a web page providedby a photo service center, this solution leave some things to be desiredtoo, since many users may be uncomfortable storing photos of theirfamilies on some photo service server in some unknown location where itis also often unknown what level of security (if any) such server isprovided with.

Another common problem occurs when an employee needs access to files onhis or her computer at work, but is at home, and has no direct access tothe files. This often requires a trip to the office to download thefiles to a portable storage device, such as a floppy disk, CDR, CDRW orflash memory. Although some facilities have installed virtual privatenetworks (VPNs) which would allow a worker in this situation to accesshis/her files from home, VPNs are expensive, awkward and cumbersome touse, and are simply not currently available to many users

It is not uncommon today for a user to have separate computing systemsfor business and home use at home, one or more computer systems at work,one or more PDA's, laptops and even one or more cellular phones withdata storage capability, all of which may have overlapping data filesthat the user may wish to access at any given time from any one of thesedevices. This requires that the common data all be kept current, i.e.,with the latest version of each common file, as it is typical to updateand edit files. This in itself can be an enormously time consuming andtedious responsibility to frequently synchronize files between all ofthe devices that maintain a local copy.

Current synchronization solutions, VPNs, as well as the ability toupload files to a central server location do not adequately address theabove problems, as they are cumbersome and time consuming to use, and,in the case of VPNs, expensive and not widely available to the averageuser.

It would be desirable to provide a solution which is easy to use,relatively inexpensive and widely available to allow users to accesstheir information (i.e., data files) wherever they may reside on anynetwork accessible communication device, from any location accessibleover that network, using any network accessible device, in a securemode. This would ensure that only that user (and optionally any otherusers that the user wished to grant permission to) can access the user'sfiles, even though such access may be made via a public network, such asthe Internet, for example. It would be desirable that such a systemwould provide sufficient security so that no unauthorized users cansteal or “hack into” a user's data files while it travels through thepublic network (e.g., Internet).

It would further be desirable that such a solution would take little orno time to set up and little or no effort or capital to maintain, as ITmanagers are already overloaded with complexity and time (and money)consuming tasks to maintain their current systems.

Still further, it would be desirable if such a solution permitted secureaccess by a variety of methods, including DSL, dial-up and cable modems,Ethernet ports (such as from a hotel), wireless (such as wireless Wi-Fihotspot, or other wireless technologies) and from an Internet café usinga temporary machine, as well as from behind different firewalls. TheInternet is currently quite accessible and accomplished in offeringpublic access, but is still quite limited in permitting private access.

Remote, secure access of devices through the Internet has presented manyproblems. Providing secure access to remote devices has typicallyrequired setup of a dedicated private network or dedicated virtualprivate network (VPN) for remote device access. A dedicated serverwithin the private network provides for communication with the Internet,and a dedicated telephone line, digital subscriber line (DSL) or likecommunication interface is used to connect the device to the dedicatedserver. Such a system involves costly and difficult installation andmaintenance. Connection to the remote access device is typically througha modem connection, and data transfer between the device and remote useris slow. Even where DSL or other broadband capability is available forconnection to the remote device, real time data transfer of videostreams and data intensive operations cannot be effectively carried out.Remote device access systems have also been deficient in that only asingle user can access a remote device at a time. This problem isparticularly acute in situations when a customer and a support person atdifferent locations both simultaneously wish to access a remote deviceat a third location.

Remote access of devices via the Internet or other wide area network inmany cases involves a user located within one private local areanetwork, and a device located within another, different private network.Information exchange between private computer networks via the Internethas created various security issues associated with protection ofinformation on the private computer networks. Connection of a personalcomputer in a private network to the Internet can expose confidentialdata to unauthorized access or hostile attack from virtually anywhere inthe world. Some of the sophisticated types of security threats posed by“hackers” include “logic bomb”, “trapdoor”, “Trojan horse”, “virus” and“worm” programs. Such software programs can work independently or via aninvoked host program to breach security, disrupt activity and causedamage by destruction of electronic files, alteration of databases, orintroduction of computer viruses which affect the operability of theprivate computer network, computer hardware connected to the privatenetwork, and network-accessible devices within the private network.

One approach to private network security has been the use of “firewalls”embodied in hardware and/or software to protect private local areanetworks from hostile intrusion from the Internet. A firewall is locatedgenerally at the junction point or gateway between a private network anda public network such as the Internet and allows a network administratorto selectively offer access to specific types of Internet services tospecific LAN users by filtering inbound and outbound traffic. Nearlyevery private network now has some form of firewall in place to protectinternal data from outside intrusion.

Firewalls may operate by inspection of binary data at different layersof the TCP/IP (Transport Control Protocol/Internet Protocol) hierarchyin order to use different criteria for restriction of traffic. Binarydata from the highest protocol layer, i.e., the Application Layer, isencapsulated within lower-level protocols all the way to the physicallayer for transmission in network media such as twisted pair wire, fiberoptic, cable or wireless channels. Packet filtering firewalls may becarried out at the Internet Protocol or Network layer. Circuit levelgateway firewalls work at the TCP or Session Layer, and monitor TCP“handshaking” between packets to determine whether a requested sessionis legitimate. Application level gateway firewalls or “proxies” areapplication specific and can filter application specific commands suchas http:post and get, which cannot be accomplished by packet filteringor circuit level firewalls. State-full multilayer inspection firewallscan combine the aspects of the above types of firewalls to provide ahigh level of security.

While firewalls have been largely beneficial for the security of privatenetworks, the implementation of firewalls brings some importantdrawbacks. Particularly, there is an increasing use of applications thatinvolve data transfer between different, heterogeneous private networksvia the Internet. Users increasingly need to make connections fromvarious locations across local-area-networks or wide-area-networks toaccess data. This is currently typical of even a home user, who may havea local area network in his or her home with a firewall between it andthe Internet. Access to the user's work computer presents this problem,as the work computer is most likely on a network behind a firewall atthe work location. The firewalls involved will typically be differentdue to the different security needs and environments involved in thedifferent private networks, and the firewall systems can impose seriouslimitations to data transfer between the heterogeneous networks.

As mentioned above, one approach to allowing secured connection betweenlocal area networks is to employ virtual private network (VPN) systems.However, such VPN systems require expensive and complex installation ofadditional hardware and/or software at network access locations. The useof VPN systems also require that network administrators forparticipating networks implement some kind of joint network securitypolicy, which is difficult or impossible in many situations.Furthermore, VPN systems are still an “emerging” technology, andinteroperability among different VPN systems imposes limitations toconnection of multiple private networks. Still further, VPNs mayrestrict some wireless access.

Examples of other efforts at providing remote access to data includethose made by pcAnywhere (Symantec) and GoToMyPC™(https://www.gotomypc.com/), each of which offer software solutions thatgive desktop control; i.e., allowing the user to control the user'sdesktop remotely. The user logs in to a remote desktop, then accesses afile structure of the remote machine, clicks on the file or files theuser is interested in accessing, then clicks on the user's own localsite on the current machine where the user wants the file or files to bestored. The software then transfers the file or files to the user'scurrent (local) machine. When the user is finished with the files, thefiles are then re-transmitted back to the remote machine from which thefiles were downloaded. This is not intuitive and it also requiressignificant amounts of bandwidth, since entire files must betransferred. If the files contain graphics, video or other datarequiring a large amount of storage space, these solutions can becomevirtually unusable, particularly if the user is on a dial up modemconnection. Even if the files to be transferred are strictly text, thesesolutions require a great deal of bandwidth just to control the video,since the “remote desktop” that appears at the user's device is a videoimage of the desktop that is being remotely accessed. These products arefundamentally dependent upon sending computer screen display data, asnoted, and have significant difficulty, if at all possible, inconnecting to various non-Windows® based devices such as PDAs, cellularphones, MP3 players, home entertainment equipment, industrial controlsand home appliances.

To use pcAnywhere or GoToMyPC™ a user must log in to the web site ofeither of these services, and then get a picture of the remote desktop.From the desktop, the user sees a file structure, and can navigate intothe file structure to select a file or files to be transferred. Onceselected, the file is transferred to the user's local computer. Thesesolutions do not perform any synchronization or updating, but merelysend the entire file or files, lock, stock and barrel, both ways. Nor doeither of these products address the problems presented in communicatingbetween two computers, each of which are located behind firewalls havingdifferent criteria for restricting communications traffic therethrough.

Many companies do not want their employees to store all of theirsensitive data that they need to use when away from the office locallyon a portable device, because this poses a security risk with thepossibility that the portable device may be stolen. Although it ispossible to encrypt such data, this requires additional time, expenseand effort, and is cumbersome. Thus, a solution is needed that enablesrapid, secure access to such information from a remote location (such asthe office, in this example) to a local user (e.g., the employee who ison travel).

Some Microsoft operating systems provide the ability to mount drives(e.g., remote devices) other than the ones that are locally present atthe site where a user is operating from. These “virtual drives” arelocated physically on some other computer system and may be accessedthrough a central server, wherein each user computer can connect locallyto the central server. In such an arrangement, a local user can storedata at local drive or store it centrally on the server. However, if aremote device is behind a firewall, this solution does not allow accessto the remote device, and generally a VPN is installed to permit access.Further, if a user is not set up with the Micorsoft solution discussedabove, and has two or more devices using the same data file or files,the user must frequently synchronize the data among the devices. Thesynchronization process is very time consuming, and doesn't always workon the first try. If the synchronization stalls or crashes part waythrough, the user must start all over again performing the entiresynchronization task. This can be very frustrating when a crash occursafter 90% completion of a synchronization operation, for example.

There is accordingly a need for a system that allows quick and easycommunication between users and remote, network-enabled devices, thatallows collaborative use of remote devices by multiple users, that issimple and inexpensive to install and maintain, that provides securecommunication between firewall-protected private networks, as well asnon-firewall protected computers and devices, and which is generallycompatible with emerging, increasingly important applications such asremote access to a user's files and directories, synchronization offiles, backup of files and controlling and monitoring functions forremote devices. The present invention satisfies these needs, as well asothers, and generally overcomes the deficiencies found in the backgroundart.

SUMMARY OF THE INVENTION

The invention provides applications, systems, methods and computerreadable media for securely and remotely operating a remote computerfrom a local computer over a public network while providing seamless,firewall-compliant connectivity are provided, including the steps of:authenticating at least one of the remote computer for connection to thelocal computer over the public network and the local computer forconnection to the remote computer over the public network; establishinga secure connection between the local computer and the remote computerover the public network; and integrating a desktop of the remotecomputer on a display of the local computer.

Systems, applications, methods and computer readable media for securelyand remotely operating a remote computer from a local computer over anetwork while providing seamless, firewall-compliant connectivity areprovided, including the steps of: authenticating at least one of theremote computer for connection to the local computer over the networkand the local computer for connection to the remote computer over thenetwork; establishing a secure connection between the local computer andthe remote computer over the network; and integrating a desktop of theremote computer on a display of the local computer.

Systems, applications, methods and computer readable media are providedfor accessing and using at least one remote computer from a localcomputer over a public network, including the steps of: centrallyauthenticating, at a location having a public address, a first computerhaving a first, firewall protected private address; creating a firstfirewall compliant connection between a publicly addressed connectionserver and the first computer upon authentication of the first computer;establishing a second firewall compliant connection between the publiclyaddressed connection server and a second computer having a secondfirewall protected private address; establishing aprivate-to-public-to-private communications tunnel, wherein theconnection server routes communications from the first computer throughthe first firewall compliant connection and the second firewallcompliant connection to the second computer, and from the secondcomputer through the second firewall compliant connection and the firstfirewall compliant connection to the first computer; and performing atleast one further step selected from the group consisting of:integrating a file structure of accessible files accessed at the secondor first computer, into a file structure contained at the first orsecond computer, respectively; at least one of integrating a desktop ofthe second computer on a display of the first computer and integrating adesktop of the first computer on a display of the second computer; anddirectly operating the second computer from the first computer or thefirst computer from the second computer, wherein the computer that isdirectly operated is selected from the group consisting of: homeappliances, video equipment, audio equipment, printers, fax machines,office equipment, medical devices, vehicles, cameras, RFID equipment,laboratory equipment, manufacturing machinery, GPS equipment, anddevices having one or more embedded microprocessors.

One or more connection servers may be included in the system, tooperatively connect the computers across the wide area network. Theconnection server may provide at least one to all of authentication,authorization, security, encryption and point-to-multipointcommunications functionalities to the system.

Alternatively, computers may be connected over the wide area networkwithout the use of a connection server, and with or without a VPN.

Data transmissions may be managed to minimize bandwidth and may betemporally and/or spatially compressed.

The computers may be located behind differing firewalls and still notimpede the functionality or ease of use of the present invention.

Systems, methods and computer readable media are provided for remotelyaccessing data from a remote storage device, including the steps of:requesting data from a first computer in a first location to a remotestorage device associated with a second computer in a second location,wherein the first and second computers are connected over a wide areanetwork; and displaying a file structure, on a display of the firstcomputer, of data stored on the remote storage device, wherein thedisplayed file structure may be interacted with by a user of the firstcomputer in the same manner that a user of the second computer wouldinteract with the file structure locally on a display of the secondcomputer and wherein at least one of the first and second computers islocated behind a firewall.

Persistent network connections are provided between the computers sothat if a connection is broken, the connection is automaticallyreconnected to resume functioning without any requirement forreconfiguration required to resume normal functioning.

Access may be predicated upon a remote user logging in with passworddata and/or meeting biodata security requirements.

The computers may be interconnected securely over a wireless connection,without the need to configure a firewall. The computers may be connectedvia a VPN.

Computer readable media containing instructions for operating one ormore computers to carry out the methods described herein are alsocovered by the present invention.

These and other features and advantages of the invention will beapparent from the detailed description below.

BRIEF DESCRIPTIONS OF THE DRAWINGS

The invention will be more fully understood by reference to thefollowing drawings, which are for illustrative purposes only.

FIG. 1 is a functional block diagram of an access and control system fornetwork-enabled devices in accordance with the invention.

FIG. 2 is a functional block diagram of an access and control system inaccordance with the invention with distributed control infrastructurethat includes a plurality of connection servers.

FIG. 3 is a functional block diagram of an alternative embodiment accessand control system in accordance with the present invention wherein asecurity server is used in a connection server system.

FIG. 4 is a flow chart illustrating user authentication and connectionaspects of the methods of the invention.

FIG. 5 is a flow chart illustrating authorization and security aspectsof the methods of the invention

FIG. 6 is a flow chart illustrating load balancing aspects of serverselection in the methods of the invention.

FIG. 7 is a flow chart illustrating operation of a client process anddevice control computer process in accordance with the invention.

FIG. 8 is a flow chart illustrating operation of a connection serverprocess in accordance with the invention.

FIG. 9 is a functional block diagram of an embodiment of the presentinvention illustrated for use in providing seamless and secure access todata and devices whether or not they are firewall protected.

FIG. 10 shows another example of the present invention, in which onlythree computers/network-enabled devices are shown for simplifying thedescription thereof.

FIG. 11 is a block diagram for use in illustrating functionalities ofstrategic cache management according to the present invention.

FIG. 12 is a flow chart illustrating a file overhead data managementprocess in accordance with the present invention.

FIG. 13 is a flow chart illustrating a file data management process inaccordance with the present invention.

FIG. 14A illustrates one view in an example of a user interface that maybe employed with the present systems and methods.

FIG. 14B shows another view of the example user interface of FIG. 14A.

FIG. 14C shows still another view of the example user interface of FIG.14A.

FIG. 15 shows implementation of a connection server on a gatewayaccording to the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Before the present systems, methods and recordable media are described,it is to be understood that this invention is not limited to particularembodiments described, as such may, of course, vary. It is also to beunderstood that the terminology used herein is for the purpose ofdescribing particular embodiments only, and is not intended to belimiting, since the scope of the present invention will be limited onlyby the appended claims.

Where a range of values is provided, it is understood that eachintervening value, to the tenth of the unit of the lower limit unlessthe context clearly dictates otherwise, between the upper and lowerlimits of that range is also specifically disclosed. Each smaller rangebetween any stated value or intervening value in a stated range and anyother stated or intervening value in that stated range is encompassedwithin the invention. The upper and lower limits of these smaller rangesmay independently be included or excluded in the range, and each rangewhere either, neither or both limits are included in the smaller rangesis also encompassed within the invention, subject to any specificallyexcluded limit in the stated range. Where the stated range includes oneor both of the limits, ranges excluding either or both of those includedlimits are also included in the invention.

Unless defined otherwise, all technical and scientific terms used hereinhave the same meaning as commonly understood by one of ordinary skill inthe art to which this invention belongs. Although any methods andmaterials similar or equivalent to those described herein can be used inthe practice or testing of the present invention, the preferred methodsand materials are now described. All publications mentioned herein areincorporated herein by reference to disclose and describe the methodsand/or materials in connection with which the publications are cited.

It must be noted that as used herein and in the appended claims, thesingular forms “a”, “and”, and “the” include plural referents unless thecontext clearly dictates otherwise. Thus, for example, reference to “adevice” includes a plurality of such devices and reference to “thecomputer” includes reference to one or more computers and equivalentsthereof known to those skilled in the art, and so forth.

The publications discussed herein are provided solely for theirdisclosure prior to the filing date of the present application. Nothingherein is to be construed as an admission that the present invention isnot entitled to antedate such publication by virtue of prior invention.Further, the dates of publication provided may be different from theactual publication dates which may need to be independently confirmed.

DEFINITIONS

As used herein, the term “remote device” or “remote computer” refers toa computer and/or device connected to a computer or network-enableddevice located somewhere other than where the user is currently located,and which the user wishes to access data from and/or remotely control.Note that a remote computer or remote device includes not onlycomputers/devices that are accessible by the local user only over apublic network, but also may also be a computer/device that is in thesame room as the local user or in another location accessible by a localor private network.

The term “remotely located device” or “remotely located computer” refersto a remote computer or remote device that can only be accessed by alocal computer by connecting through a public network.

The term “local device” or “local computer” refers to a device orcomputer which is physically in the same location of the user andphysically accessible to the user to use in performing the functionsthat it was designed for. All local devices/local computers also havethe ability to access remote devices/remote computers using thefunctionality provided by the present invention.

The term “computer” generally refers to a minicomputer, a microcomputer,a UNIX® machine, mainframe machine, personal computer (PC) such asINTEL®, APPLE®, or SUN® based processing computer or clone thereof,laptop computer, notebook computer, tablet computer, personal digitalassistant (PDA), cellular phone with wide area network accesscapability, MP3 player or other portable entertainment device havingwide area network access capability (e.g., iPod, available from Apple,Cupertino, Calif.), or other network-enabled portable digital devices,or other appropriate computer, such as home appliances, televisions,stereos, audio and/or video equipment, including recording devices,security devices, printers, fax machines, other office equipment,medical devices, vehicles cameras, GPS equipment, laboratory equipment,RFID equipment, manufacturing machinery, and other devices having anembedded processor capable of wide area network access, or any machinehaving or locally associated with storage capability, and having theability to access a wide area network to function with the presentinvention.

The term “client computer” generally refers to a computer locallyconnected to a local device, although it may also function as a computerlocally connected to a remote device when a user is accessing it fromanother location.

Similarly, the term “network-enabled device” may refer to a local deviceor a remote device, depending upon the function that it is currentlysupporting.

Also, “device control computer” may be used to refer to means forcontrolling a remote device, although it may also be used to refer tomeans for controlling a local device, when the user is physicallylocated in and operating from the location of such means.

The term “DataClient” or “device module” refers to the computer orclient computer that incorporates or is directly connected to thephysical drive or other storage means that is being shared with othercomputers or clients.

The term “UserClient” or “user module” refers to a computer or clientcomputer that is accessing the data stored by the “DataClient” or“device module”.

The term “storage device” refers to any type of device capable ofstoring digital information, such as hard drives, CD-ROM/RAM, DVDROM/RAM, floppy disks, solid state storage devices such as flash memoryor the like, tape or optical storage, or any other storage devicecapable of storing digital data. A storage device may be contained in orlocally operatively connected with any of the types of computers ordevices mentioned above, including, but not limited to PC's MP3 playersor other personal, portable digital devices, laptop computers, personaldigital assistants (PDA's), cellular phones, home appliances, videoequipment audio equipment, printers, fax machines, other officeequipment, medical devices, vehicles, cameras, RFID equipment,laboratory equipment, manufacturing machinery, GPS equipment, and otherdevices that may be controlled by a microprocessor, such as devices withembedded microprocessors, for example, or may be a network-attachedstorage device, wherein the storage device is connected to one or morecomputers over a network.

A “personal identification device” or “personal security device” refersto a device configured to personally authenticate a user prior toauthorizing a secure connection. Such a device may require securityinformation such as user names, passwords, etc., Alternatively, oradditionally, authentication data may optionally include biometric data,such as fingerprint identification or retinal scan identification, orthe like. A camera may be configured with a user computer to perform aretinal scan of the user for similar verification. Furtheralternatively, a computer may be provided with a touch screen from whichfingerprint data may be read upon a user's touching of the screen.Another alternative is to provide a portable device or “portablesecurity device”, such as a USB stick or other portable storage device,that must be integrated into the network connection in order toauthenticate the session. Such a portable security device may include anencrypted key or other code that is essential to gaining authorization.Additionally or alternatively, such a portable security device may alsoinclude one or more types of biometric sensor. For example, a USB stickmay be provided with a sensor to read and input the user's fingerprintinformation when the user plugs the USB stick into a local computer andtouches the sensor appropriately.

“File” refers to any data structure which can be stored in a hard-driveor other storage device such as CD-ROM/RAM, DVD ROM/RAM, floppy disk,solid state storage device such as flash memory or the like, tape oroptical storage, or any other storage device capable of storing digitaldata. Thus the term “file” also includes folders, directories, and thelike.

The term “file overhead information” refers to file attributes orproperties that may include but are not limited to file name, file size,folder status, last modified date, created date, etc. Every file orfolder has file overhead information that can be used by localapplications to get properties information about a file or a folder.

The term “file data” refers to the actual binary content of a file. Forexample, the file data of a JPEG picture file refers to the actual bitsthat are in the file which represent the picture.

The term “Delta” refers to differential data that is the result ofcalculating differences between files that is performed for differencecompression used in updating a file according to the present invention(e.g., the difference between the file as originally downloaded and thefile as edited, or the difference between the currently edited file andthe most recent previously edited filed).

The term “Inverse Delta” refers differential data that is the result ofcalculating differences between files in the reverse order to the way inwhich a “Delta” file is calculated. Inverse Delta files may be used torevert back to an earlier version of file data.

Disclosed herein are systems, applications, methods and recordable mediafor efficient data access and control of storage devices betweenmultiple computers connected by a wide area network or by a local areanetwork. It will be appreciated that apparatus disclosed herein may varyas to configuration and as to details of the parts, and that methods mayvary as to details and the order of the acts, without departing from thebasic concepts as disclosed herein. It should also be understood thatthe terminology used herein is for the purpose of describing particularembodiments only, and is not intended to be limiting, since the scope ofthe present invention will be limited only by the appended claims. Theinvention may be embodied in networked computer systems in a variety ofconfigurations other than the exemplary configurations shown herein. Theinvention is described primarily in terms of use with HTTP (HypertextTransfer Protocol), but may be used with other data transfer protocols.It should also be apparent to those skilled in the art that variousfunctional components of the invention as described herein may share thesame logic and be implemented within the same circuit, or in differentcircuit configurations.

Referring now to FIG. 1, an access and control system 10 fornetwork-enabled devices is shown which permits seamlessfirewall-compliant interconnectivity between one or more client or usercomputers 12 a, 12 b, that may be operatively coupled to a connectionserver 14 via a public or global network 16 such as the Internet, withone or more network-enabled devices 18 a, 18 b that are also operativelycoupled to connection server 14 via global network 16. As shown, clientcomputers 12 a, 12 b are part of a first private network 20 that isoperatively coupled to the global network 16 through a firewall element22. Network-enabled devices 18 a, 18 b are located within a secondprivate network 24 that is operatively coupled to global network 16 viafirewall element 26. In this example, connection server 14 is locatedwithin a private network 28 that is operatively coupled to globalnetwork 16 via firewall element 30. A more complete and detaileddescription of the access and control system 10 shown in FIG. 1 can beobtained in the parent application Ser. No. 09/608,685.

User or client computers may comprise any standard computer such as aminicomputer, a microcomputer, a UNIX® machine, mainframe machine, supercomputer, personal computer (PC) such as INTEL®, APPLE®, or SUN® basedprocessing computer or clone thereof, personal digital assistant (PDA),wearable computer, cellular phone with wide area network accesscapability, MP3 player or other portable entertainment device havingwide are network access capability (e.g., iPod, available from Apple,Cupertino, Calif.), laptop, notebook, or other appropriate computer,such as home appliances, televisions, stereos, audio and/or videorecording devices, security devices and other devices having an embeddedprocessor capable of wide area network access. Client computers may alsoinclude typical computer components (not shown), such as a motherboard,central processing unit (CPU), memory in the form of random accessmemory (RAM), hard disk drive, display adapter, other storage media suchas diskette drive, CD-ROM, DVD-ROM, CD-RW, DVD-RW, flash-ROM, tapedrive, PCMCIA cards and/or other removable media, a monitor, keyboard,mouse and/or other user interface, a modem, network interface card(NIC), Bluetooth® and/or other conventional input/output devices. Inmany embodiments, client computers comprise conventional desktop or“tower” machines, but can alternatively comprise portable or “laptop”computers, notebook computers, handheld personal digital assistants(PDAs) or “palm-top” computers, tablet computers, cellular phonescapable of browsing Web pages, “dumb terminals” capable of browsing Webpages, internet terminals capable of browsing Web pages such as WEBTV®,or other Web browsing or network-enabled devices.

Each user or client computer 12 a, 12 b may comprise, loaded in itsmemory, an operating system (not shown) such as UNIX®, WINDOWS® 98,WINDOWS® ME, WINDOWS® 2000, LINUX®, System X®, Apple OS®, PALM OS® orthe like, or a proprietary operating system. Each client computer 12 a,12 b may further have loaded in memory a Web Browser program (not shown)such as NETSCAPE NAVIGATOR®, INTERNET EXPLORER®, AOL®, or like browsingsoftware for client computers. In accordance with the invention, clientcomputers 12 a, 12 b may each comprise programming 32 stored in memorythat allow client computers 12 a, 12 b to send instructions tonetwork-enabled devices 18 a, 18 b as requests through connection server14, and receive data from network-enabled devices 18 a, 18 b viaresponses through connection server 14, as described further below.Programming 32 may be the form of electronically, optically, ormagnetically stored code or other form of computer readable stored code,that is loaded in the RAM, cache, or other memory of client computers 12a, 12 b.

Connection server 14 may be any standard data processing device orcomputer, including a minicomputer, a microcomputer, a UNIX® machine, amainframe machine, super computer, a personal computer (PC) such as anINTEL® based processing computer or clone thereof, an APPLE® computer orclone thereof or, a SUN® workstation, wearable computer, or otherappropriate computer. Connection server 14 may include conventionalcomponents (not shown) such as a motherboard, central processing unit(CPU), random access memory (RAM), hard disk drive, display adapter,other storage media such as diskette drive, CD-ROM, DVD-ROM, CD-RW,DVD-RW, flash-ROM, tape drive, PCMCIA cards and/or other removablemedia, a monitor, keyboard, mouse and/or other user interface means, amodem, network interface card (NIC), and/or other conventionalinput/output devices. Multiple connection servers 14 may be used, asdescribed further below.

Connection server 14 has stored in its memory a server operating system(not shown) such as UNIX®, WINDOWS® NT, NOVELL®, SOLARIS®, LINUX® orother server operating system, or a proprietary sever operating system(e.g., NEC or other proprietary system). Connection server 14 also hasloaded in its memory web server software (also not shown) such asNETSCAPE®, INTERNET INFORMATION SERVER™ (IIS), or other appropriate webserver software loaded for handling HTTP (hypertext transfer protocol)or Web page requests from client computers 12. Connection server 14 mayalso comprise a connection handler array 34 configured to establish andmaintain a plurality of network connections between a plurality ofclients 12 and one or more network-enabled devices 18. A connectionserver usable with the invention is also described in U.S. Pat. No.6,499,054, which is incorporated herein by reference thereto.

Network-enabled devices 18 a, 18 b may comprise any equipment orcomponents capable of receiving instructions and transmitting data via acomputer network. Such devices may comprise, in specific embodiments,scientific instruments, chemical reactors, video security devices,surgical devices, power meters, power generators, automobiles or othertransit machinery, home appliances, manufacturing equipment, officeequipment, or like devices, hard drives, solid state memory such asflash memory and the like, other storage media drives, such as CDR/RWand DVDR/RW drives, floppy drives, network attached storage devices,other optical or tape drives, routers, or electronic control modules forvirtually any remotely controllable equipment, that are configured to becontrolled, monitored or otherwise operated remotely. More than onenetwork-enabled device 18 a, 18 b may be used in association with eachdevice control computer 36 a, 36 b, 36 c. Network-enabled devices 18 a,18 b may be configured for “plug-and-play” operation wherein the devices18 a, 18 b may be coupled to device control computer 36 a, 36 b, 36 cwithout interruption of operation of device control computer 36 or othernetwork-enabled devices 18 a, 18 b coupled to the device controlcomputer 36 a, 36 b, 36 c via hardwire, USB, IEEE 1394, “FIREWIRE®”,RS-232, Parallel, PCI, BLUETOOTH®, 802.11 (a, b or g) or like interface.

The system 10 as shown in FIG. 1 represents only one of many possiblenetworked computer systems that is usable with the invention. Only twoclient computers 12 a, 12 b are shown within private network 20, and twonetwork-enabled devices 18 a, 18 b and three device control computers 36a, 36 b, 36 c are shown within private network 24, for reason ofclarity. Additional private networks, client computers, device controlcomputers and network-enabled devices may be present in the system 10.Further, both user or client computers and network-enabled devices maybe present within each private network. Numerous variations will suggestthemselves to those skilled in the art. Still further, the presentinvention is applicable to only two computers across a wide area networksuch as the Internet, with or without firewall protection.

FIG. 2 shows another arrangement of an access and control system 46 thatmay be used in accordance with the present invention for efficientremote access and control of storage devices. The system 46 includes adistributed control infrastructure 48 comprising a plurality ofconnection servers 14 a, 14 b, 14 c, 14 d, 14 e, 14 f, 14 g, 14 h, 14 n.Connection servers 14 a-14 n each include the same components andsoftware described above for the connection server 14 of FIG. 1. Asshown, connection server 14 a is configured to operate as a primaryconnection server, with each of servers 14 b-14 n operatively coupled toconnection server 14 a. A complete detailed description of thearrangement shown in FIG. 2 can be obtained in the parent applicationSer. No. 09/608,685.

FIG. 3 illustrates still another example of an access and control system54 that may be used in accordance with the present invention forefficient remote access and control of storage devices. As in theexamples of FIGS. 1 and 2, the present invention does not require theaccess and control system shown in FIG. 3, or any access control system,as the invention may be practiced point to point between two computersover a wide area network for example, with or without the use of a VPN.However, use of an access and control system as described greatlyenhances the versatility of the present invention for use across privatenetworks having diverse firewalls installed, for example. The system 54has a distributed control infrastructure 56 with a security server 58. Aplurality of connection servers 14 a, 14 b, 14 c, 14 d, 14 e, 14 f, 14g, 14 h, 14 n are operatively coupled to security server 58, and to aplurality of databases 52 a, 52 b, 52 n. Security server 58 may beoperatively coupled to a plurality of client computers 12 a, 12, 12 c,12 n, and to a plurality of device control computers 36 a, 36 b, 36 c,36 d and network-enabled devices 18 a, 18 b, 18 c, 18 d, 18 e, 18 f, 18g, 18 n via the Internet or other wide area network in the mannerdescribed above. Client computers 12 a-12 n each include the storedclient process or program 32, and device control computers 36 a-36 n,each including device control process or program 38. The distributedcontrol infrastructure 56 is scalable and reconfigurable according tothe number of client computers, device control computers andnetwork-enabled devices that are present in the system 54. Additionalsecurity servers 58 may be included in infrastructure 56 as well, ifneeded. A complete detailed description of the arrangement shown in FIG.3 can be obtained in the parent application Ser. No. 09/608,685.

FIG. 4 is a flowchart describing the operation of the access and controlsystem 54. The events of FIG. 4, it should be understood, apply to bothclient computers 12 a-12 n as well as device control computer computers(DCC) 36 a-36 n. In event 400, the user of a client computer 12 a-12 ncontacts security server 58 of distributed control infrastructure 56.This contact may be carried out in a conventional manner by establishinga TCP socket connection between a client computer 12 a-12 n and thesecurity server 58. At event 410, a determination is made by securityserver 58 as to whether or not the user of client computer 12 a-12 nthat made contact in event 400 is authorized. The authenticationapplication 60 on security server 58 checks to see whether or not theauthentication data in the request has been altered during transmissionfrom client computer 12 a-12 n, and whether or not the authenticationdata verifies the user of client computer 12 a-12 n. If authorization isdenied, event 400 may be repeated. An HTTP response may be sent by thesecurity server to the client computer 12 a-12 n advising the user of asecurity error, and that access to any network-enabled devices 18 a-18 nis denied. If the user of client computer 12 a-12 n is authorized inevent 410, encryption keys may be prepared and verified for the user.Following user authorization, event 420 is then carried out. Theauthorization process and security aspects of the system 54 arediscussed in greater detail below with reference to the flow chart ofFIG. 5.

At event 420, security server 58 assigns one of the connection servers14 a-14 n to the user of client computer 12 a-12 n that was authorizedin event 410. In event 430, a connection is made between the connectionserver 14 a-14 n assigned in event 420, and the network-enabled device18 a-18 n selected by the user authorized in event 410. This connectionmay be in the form of a TCP socket connection between the securityserver 58 and the network-enabled device 18 a, 18 n selected by theuser.

In event 440, client computer 12 a-12 n transmits instructions orcommands to a network-enabled device 18 a-18 n, and in event 450,network-enabled device 18 a-18 n transmits data to client computer 12a-12 n. These events may occur concurrently, as full duplex connectionsare established. Client process 32 on client computers 12 a-12 nperiodically sends HTTP requests to connection server 14 a-14 n thatinclude embedded command data. Device control process 38 on devicecontrol computer 36 a-36 n also sends periodic HTTP requests toconnection server 14 a-14 n with embedded data from network-enableddevice 18 a-18 n. At event 460, data from network-enabled device 18 a-18n (or client computer 12 a-12 n) is stored in database 52 a-52 n. Thisdata may be used by other authorized users in the same session or insubsequent sessions. A complete detailed description of the arrangementshown in FIG. 4 can be obtained in the parent application Ser. No.09/608,685.

FIG. 5 is a flow chart illustrating user authentication and encryptionaspects of a control and access system that may be used for efficientremote access and control of storage devices in accordance with thepresent invention. Although the events of FIG. 5 are again described interms of use with client computers 12 a-12 n, it should be understoodthat the same events may be carried out in association with devicecontrol computers (DCC) 36 a-36 n. The events shown in FIG. 5 may occurconcurrently with event 410 of FIG. 4, and illustrate in more detail oneembodiment of an authentication system that may be used with theinvention.

In event 500, process 32 on client computer 12 a-12 n preparesauthentication data that is to be sent to security server 58, andcalculates a message digest value for the authentication data. At event502, process 32 on client computer 12 a-12 n encrypts the authenticationdata, together with the message digest value calculated in event 100,using the public key for security server 58. At event 504, process 32 onclient computer 12 a-12 n sends an HTTP request to security server 58that includes, embedded therein, the encrypted authentication data andmessage digest value.

At event 506, security server 58 receives the HTTP request from clientcomputer 12 a-12 n, and authentication process 60 on security server 58decrypts the embedded authentication data and corresponding messagedigest value from the HTTP request using its private key. Theauthentication process 50 separates the authentication data from themessage digest value received in the request. At event 508,authentication process 60 computes or calculates a message digest valuefrom the decrypted authentication data and compares the computed messagedigest value to the received message digest value of event 506. At event510, authentication process 60 determines whether the computed messagedigest value and the received message digest value match. If thecomputed message digest value and received message digest value are notidentical, the authentication data from client computer 12 a-12 n hasbeen altered or corrupted while en route to security server 58, andevent 512 is carried out. If the computed message digest value andreceived message digest value match or are identical, event 514 occurs.

At event 512, an HTTP response with a security error message may be sentto client computer 12 a-12 n by security server 58. The message mayadvise the user of client computer 12 a-12 n that authentication datacould not be validated, and invite the user of client computer 12 a-12 nto re-submit the authentication data. After a selected number of failedauthentication attempts by client computer 12 a, 12 n by repeatingevents 500-510, a message may be sent to client computer 12 a-12 n toadvise the user thereof that the desired network connection is notavailable due to authentication failure. If the computed message digestvalue and received message digest value match in event 510, the receivedauthentication data has not been altered or corrupted, and event 514 iscarried out. Authentication process 60 on security server 58, in event514, verifies the authentication data recovered in event 506 bycomparing the username and password received from client 12 a-12 n tosecurity information stored in database 52 a. This security informationincludes known usernames and passwords for valid or permitted users ofclient computers 12 a-12 n. Alternatively, or additionally,authentication data may optionally include biometric data, such asfingerprint identification or retinal scan identification, or the like.For example, a key used by a user to input keystrokes through a computermay be equipped to read the fingerprint of the user to verify that thefingerprint data read matches the identity of the purported user. Acamera may be configured with a user computer to perform a retinal scanof the user for similar verification. Further alternatively, a computermay be provided with a touch screen from which fingerprint data may beread upon a user's touching of the screen. Another alternative is toprovide a portable device, such as a USB stick or other portable storagedevice, that must be integrated into the network connection in order toauthenticate the session. Such a portable security device may include anencrypted key or other code that is essential to gaining authorization.Additionally or alternatively, such a portable security device may alsoinclude one or more types of biometric sensor. For example, a USB stickmay be provided with a sensor to read and input the user's fingerprintinformation when the user plugs the USB stick into a local computer andtouches the sensor appropriately. Such biometric monitoring may be onetime, upon initiating a user session/active subscription, or may beconfigured to periodically recheck the biometric data to ensure thatanother user has not replaced the original, authenticated user.

At event 516, authentication process 60 makes a decision as to whetherthe username and password information data represents an authorizeduser. If the user is authorized, event 518 occurs. If the user is notauthorized, event 512 may be carried out. Event 512 may involve an HTTPresponse to client computer 12 a-12 n with a security error message asnoted above. At event 518, security server 58 sends an HTTP response toclient computer 12 a-12 n with a message indicating that the user ofclient computer 12 a-12 n is authorized to proceed and that networkcommunication to the desired network-enabled device 18 a-18 n and/orother authorized client computer(s) 12 a-12 n may be established.

At event 520, client process 32 generates a secret key for encryption ofdata to be transmitted from client computer 12 a-12 n to thenetwork-enabled device 18 a-18 n and/or other authorized clientcomputer(s) 12 a-12 n of interest. Alternatively, device controlcomputer 36 a-36 n may generate its own secret key for transmission ofdata from network-enabled device 18 a-18 n to client computer 12 a-12 n.In event 522, process 32 on client computer 12 a-12 n generates orcomputes a message digest value for the secret key generated in event520. In event 524, client process 32 encrypts the secret key generatedin event 520, and the message digest value for the key that wasgenerated in event 522, using the public key for security server 58.

In event 526, process 32 on client computer 12 a-12 n sends an HTTPrequest to security server 58 that includes the encrypted secret key andcorresponding message digest value embedded within the request. At event528, security server 58 receives the HTTP request from client computer12 a-12 n that was sent in event 526, and authentication process 60 onsecurity server 58 decrypts the embedded secret key data andcorresponding message digest value from the HTTP request using itsprivate key. The authentication process 50 separates the secret key datafrom the message digest value for the secret key that was received inthe request. At event 530, authentication process 60 calculates orcomputes a message digest value for the decrypted secret key, andcompares the computed message digest value to the received messagedigest value for the secret key from event 528.

At event 532, authentication process 60 determines whether the computedmessage digest value and the received message digest value for thesecret key are matched. If the computed message digest value andreceived message digest value do not match, the secret key transmittedfrom client computer 12 a-12 n in event 526 has been altered orcorrupted during transmission to security server 58, and event 534occurs. If the computed message digest value and received message digestvalue match or are identical, event 536 is carried out. At event 534,security server 58 may send an HTTP response to client computer 12 a-12n with a security error message. The message may advise the user ofclient computer 12 a-12 n that the received secret key could not beverified, and may invite the user to repeat events 522-526. After aselected number of failed attempts by client computer 12 a-12 n to senda verifiable secret key, a message may be sent to client computer 12a-12 n to advise the user that the desired network connection cannot bemade.

At event 536, an HTTP response may be sent by security server 58 toclient computer 12 a-12 n advising the user thereof that the secret keyhas been received and authenticated. At this point, the security server58 has successfully authenticated the client computer 12 a-12 n and hassecurely received the secret key for encryption of data from the clientcomputer 12 a-12 n. At event 538, a connection may be establishedbetween the authenticated client computer 12 a-12 n and network-enableddevice(s) 18 a-18 n and or other client computer(s) 12 a-12 n. Thisevent may be carried out by a selected one of connection servers 14 a-14n according to the load balancing algorithm shown in FIG. 6 anddescribed below.

Numerous variations on the events, and variations in the order of eventsof FIG. 5 are possible, as will be clear to those skilled in the art. Acomplete detailed description of the security applications that may beemployed with the present invention can be obtained in the parentapplication Ser. No. 09/608,685. It is further noted that securityapplications are not essential to the present invention, but will likelybe employed to ensure that secure communications are maintained.

FIG. 6 is a flow chart illustrating the functionality of a loadbalancing system that may be employed with an access and control system,if optimizing server time is a concern. At event 600, load balancingapplication 50 on security server 58 determines the User Type or UserTypes that will be involved in a session. Identification informationrecovered from requests by security server 58 may be compared to storedUser Type data in database 52 b to make the User Type determination forthe session. At event 610, load balancing process 50 determines theSession Type for the connection to be created. This determination may,as noted, be based on identification data requests from client computer12 a-12 n and/or device control computer 36 a-36 n, which may becompared to Session Type information in database 52 b.

Server selection is next carried out by load balancing process 50 inevent 620. Server selection may be based on a comparison of User Typeand Session Type information determined in events 600, 610, to ServerType information in database 52 b. At event 630, load balancing process50 determines whether or not the connection server 14 a-14 n selected inevent 620 is active. If the selected server has active status, event 640occurs. If the selected server is not active, event 620 is repeated anda different connection server 14 a-14 n is selected. Selection ofservers 14 a-14 n may occur according to a predefined selection order,so that any particular server will not be selected twice by the processbefore each server has been selected and analyzed for purposes of loadbalancing.

At event 640, load balancing process 50 determines whether or not theconnection server 14 a-14 n selected in event 620 supports theparticular User Type determined in event 600. If the selected connectionserver 14 a-14 n is not configured to support the User Type determinedin event 600, event 620 is repeated and another, different connectionserver is selected. If the selected connection server does support theUser Type, event 650 occurs. At event 650, load balancing process 50determines whether or not the connection server 14 a-14 n selected inevent 620 supports the particular Session Type determined in event 610.If the selected connection server 14 a-14 n is not configured to supportthe Session Type determined in event 610, event 620 is repeated and adifferent connection server is selected, and events 630-650 arerepeated. If the selected connection server does support the User Type,event 660 is carried out.

At event 660, load balancing process 50 determines whether or not theconnection server 14 a-14 n selected in event 620 has adequate Power tosupport the connections that will be involved in the session to beestablished. If the selected connection server 14 a-14 n hasinsufficient Power to handle the connections that will be involved inthe session to be established, event 620 is repeated and a differentconnection server 14 a-14 n is selected. If the selected connectionserver 14 a-14 n does have sufficient Power, event 670 is carried out,wherein the designation for that selected server is temporarily storedto be used in a comparison of potentially available servers to determinewhich is best for load balancing purposes. At event 680 it is determinedwhether all of the servers have been selected and analyzed at this stagefor load balancing purposes. If the last server has not yet beenselected, processing returns to event 620 where the next server isselected. If the last server has been selected already, processing goesto event 690.

At this point, there may still be multiple connection servers 14 a-14 navailable that will meet the requirements of the session to beestablished. In event 690, a determination is made is to which of theselected connection servers 14 a-14 n stored at event 670 has the bestavailable power level for the contemplated session. If only one serverwas stored at event 670, then this server is determined to have the bestavailable server power by default. This event in selecting a connectionserver 14 a-14 n implements efficient utilization of the connectionservers 14 a-14 n. Since each connection server 14 a-14 n can supportmany simultaneous connections, this calculation takes advantage of thestatistically calculated average Power usage that is expected for eachconnection.

After determining the server with the best available server power inevent 690, the server determined as such is assigned to the currentsession/client/DCC. At event 695, having determined the best connectionserver 14 a-14 n for the upcoming session, the connection server 14 a-14n is assigned to the client computer(s) 12 a-12 n and device controlcomputer(s) 36 a-36 n and device(s) 18 a-18 n that will be involved inthat session. A complete detailed description of the load balancingapplications that may be employed with the present invention can beobtained in the parent application Ser. No. 09/608,685.

Referring now to FIGS. 7 and 8, examples of processes of data transferbetween client computer(s) 12 a-12 n and device control computer(s) 36a-36 n and their coupled network-enabled devices are described. As notedthroughout the specification, processes of data transfer which aredescribed are also applied to transfers between client computers 12 a-12n, as well as transfers between device control computers 36 a-36 n. Datatransfers are carried out by client process 32 and device controlprocess 38 in the manner shown in the flow chart of FIG. 7, and by theconnection server process 34 as shown in the flow chart of FIG. 8.

Referring now more particularly to FIG. 7, data transmission usingclient process 32 and device control process 38 is shown. In event 700,the data transmission events start. Event 700 may occur, for example,after the authentication and secret key generation and verificationevents of FIG. 5, and the load balancing connection server selectionevents of FIG. 6 have been completed. At event 710, client process 32determines whether or not client computer 12 a-12 n has any data to sendto network-enabled device 18 a-18 n. This event is carried out bychecking a sending buffer (not shown) in the memory of client computer12 a-12 n wherein are stored data that is to be sent to network-enableddevice 18 a-18 n. If no data is present in the sending buffer, events720 and 730 occur. If data for network-enabled device 18 a-18 n ispresent in the sending buffer, event 740 is carried out. Client process32 maintains communication with connection server 14 a-14 n byperiodically sending HTTP requests to connection server 14 a-14 n. If nodata was found in the client computer sending buffer in event 710,client process 32 waits for a selected period of time, i.e., nmilliseconds, in event 720. This waiting process allows the processor ofclient computer to perform other tasks in a multitasking environment.The system is persistent, in that HTTP requests are sent at maximumpredefined intervals regardless of whether any data is sent from thesending buffer along with the request. If, in event 730, it is time tosend an HTTP request to connection server 14 a-14 n, event 740 iscarried out. If not, event 710 is repeated.

At event 740, client process prepares and sends an HTTP request toconnection server 14 a-14 n. If data for network-enabled device 18 a-18n was present in the sending buffer in event 710, this event mayadditionally comprise embedding that data in the HTTP request. The datamay be encrypted using a secret key prepared in the manner describedabove. The data embedding may, for example, be carried out using theHTTP POST method. At event 750, client process 32 reads an HTTP responsefrom connection server 14 a-14 n.

At event 760, client process 32 determines whether or not there is anyembedded data from network-enabled device 18 a-18 n for client computer12 a-12 n within the HTTP response of event 750. If there is embeddeddata in the HTTP response, event 760 occurs. If there is no embeddeddata in the response, event 780 occurs. At event 770, data embedded inthe HTTP response of event 750 is read and is buffered in the memory ofclient computer 12 a-12 n for use, and client computer 12 a-12 n isnotified that data from network-enabled device 18 a-18 n has beenreceived. If the data from network-enabled device 18 a-18 n isencrypted, this event may additionally comprise decryption of the data.

At event 780, client process determines whether or not the operation ofdata transfer is to be continued. This determination may be madeaccording to instructions received from the user of client computer 12a-12 n, or according to an HTTP response from connection server 14 a-14n that includes a notification that the connection to network-enableddevice 18 a-18 n has been broken. If the operation is to be continued,events 710-780 are repeated. If the operation will not be continued, theoperation is terminated at event 790.

The connection server 14 a-14 n may serve as a bridging medium betweenclient computer(s) 12 a-12 n and network-enabled device(s) 18 a-18 n(via device control computer(s) 36 a-36 n), between client computer(s)12 a-12 n and client computer(s) 12 a-12 n, and between device controlcomputer(s) 36 a-36 n and device control computer(s) 36 a-36 n. Datafrom the device(s) 18 a-18 n that are destined for client computer(s) 12a-12 n are posted to the connection server 14 a-14 n using an HTTPrequest as previously described. Receiving the HTTP request, theconnection server 14 a-14 n then temporarily stores or buffers any datafrom the request in its memory (i.e., the sending buffer). The next timean HTTP request comes from client computer 12 a-12 n (in this example,but as noted above, a request could also be from another device controlcomputer 36 a-36 n), the connection server 14 a-14 n retrieves the datafrom the sending buffer and sends the data to client computer 12 a-12 n(or other device control computer 36 a-36 n), along with the responsefor the HTTP request. Like the request sending procedure describedabove, the response sending procedure is also efficiently adaptive forsending data substantially as quickly as it has been received, withpersistent polling also being provided by the HTTP requests which occurat least within a maximum defined interval, regardless of whether anydata is being sent along with the HTTP request. Connection server 14a-14 n may also maintain a central log file that logs all of thetransmissions and where and what time they are received, as well aswhere they are sent and at what time, for example. The central log filemay be as detailed as to provide each keystroke that was executed and bywhich user at which computer. The central log file may be searchable andused as an audit trail by searching the central server to identify whathas been done and by whom. The central log file can serve as a valuablemonitoring tool, such as for medical applications, or laboratoryprotocols, or even classroom or child monitoring, for example.

Referring next to FIG. 8, event 800, the data transfer process isinitiated. This event may occur, for example, once at least two users(e.g., at least two client computers 12 a-12 n, at least two devicecontrol computers 36 a-36 n, or, as in this example, at least one clientcomputer 12 a-12 n and one device control computer 36 a-36 n) have beenauthorized and connections to the at least two users have been opened.In this example, the at least two users are referred to as a clientcomputer 12 a-12 n and a device control computer 36 a-36 n, although itis again emphasized that the present invention is not limited to suchcommunications.

At event 810, connection server process 34 determines whether or not anyHTTP request has been received from client computer 12 a-12 n (or devicecontrol computer 36 a-36 n). If no HTTP request has been received, event820 is carried out wherein process 34 waits for a selected period oftime, and then repeats the query of event 810. If an HTTP request hasbeen received, event 830 occurs. At event 830, connection server process34 reads the HTTP request received in event 810.

At event 840, connection server process 34 determines whether or not anydata to or from client computer 12 a-12 n is embedded within the HTTPrequest. If there is data embedded in the request, event 850 is carriedout. If there is no data with the HTTP request, event 860 occurs. Atevent 850, any data present in the HTTP request is buffered in thesending buffer (not shown) of connection server 14 a-14 n. This data maybe encrypted, as noted above, but need not be decrypted by connectionserver 14 a-14 n.

At event 860, connection server process 34 determines if there is anydata present for client computer 12 a-12 n from network-enabled device18 a-18 n. If no data is present in the sending buffer, connectionserver process 34 waits for n milliseconds in event 870. Connectionserver process 34 maintains communication with client computer 12 a-12 nby periodically sending HTTP responses to client computer 12 a-12 n,which are responsive to the periodic HTTP requests from client computer12 a-12 n described above. In event 880, connection server process 34determines if the time period for sending a periodic HTTP response toclient computer 12 a-12 n has expired. If the time period has expired,event 890 is carried out. If the time period has not expired, event 860is repeated. Like the request sending procedure described above, theresponse sending procedure is also efficiently adaptive for sending datasubstantially as quickly as it has been received, with persistentpolling also being provided by the HTTP requests which occur at leastwithin a maximum defined interval, regardless of whether any data isbeing sent along with the HTTP request. Since data in the sending buffercan be sent with the HTTP response at a time which is any multiple of “nmilliseconds” upon until the maximum time interval at which an HTTPresponse must be sent, this acts as an “adaptive polling” of the sendingbuffer. That is, if data appears in the sending buffer at 30milliseconds where “n” is 10 milliseconds, then the data will be sent inan HTTP response at the 30 milliseconds time. Alternatively, if datadoes not appear in the sending buffer until 70 milliseconds, the HTTPresponse is not sent until the 70 millisecond mark, when the data issent along with the response.

In event 890, an HTTP response is sent to client computer 12 a-12 n byconnection server 14 a-14 n. If any data was present in the connectionserver sending buffer for client computer 12 a-12 n, this data isembedded within the HTTP response.

Following event 890, events 810-880 are repeated. If a connection toclient computer 12 a-12 n has been terminated, the events of FIG. 8 maybe terminated. Once again, it must be understood that the events of FIG.8 as described above are also carried out in association with devicecontrol computer 36 a-36 n, as well as client computer 12 a-12 n, toprovide data communication therebetween.

The events of FIG. 7 and FIG. 8 are described in more complete detail inparent application Ser. No. 09/608,685.

FIG. 9 shows an embodiment of the present invention for providingmanaged, peer-to-peer, seamless and secure access to data and deviceswhether or not they are firewall protected, since the present inventionenables access to firewall protected computers and devices as describedabove. Shown schematically, are various computers/network-enableddevices, each of which includes or is locally connected to at least onedevice capable of storing data and accessing that data for use by anassociated processor. For example, a home computer may be a standalonecomputer with storage device 18 a or may be a plurality of networkedcomputers on a home network, either hardwired or wireless. Many networkaccessible home computers/computer networks are also currently set upbehind a firewall 82 for enhanced security. Office System 74 will alsotypically be located behind a firewall 84, which is typically differentfrom firewall 82. Office System 82 may be limited to the user's workcomputer and its associated storage device(s) 18 b, or accessibility mayextend further to one or more servers networked on the Office System 82,or even to other user computers that are networked, depending upon theuser's needs and permission settings according to the present invention,which will be described in more detail below. In each of the examplesdescribed here, although only one data storage device is referred to, itis noted that multiple data storage devices may be employed andaccessible via the present invention.

The present arrangement permits access and sharing of data to and fromany location throughout the world which is accessible to a network thatthe devices/computers can communicate over. Although the Internet is themost ubiquitous and common network to be mentioned here, the presentinvention is not limited to only use over the Internet, as othernetworks, private as well as public may also employ this functionality.Using the example of the internet, a user on a laptop or other portablecomputer, who is traveling, for example, can access any of the otherdevices shown, including home computer 72 and Office System 74 to obtaincurrent, up-to-date files that may be needed, which perhaps the userforgot to take on the trip, or which may have been edited or updatedsince the time of the user's departure. Further, the present inventionallows collaboration, so the remotely located user can collaborativelywork with files in other locations, with other users.

Although the example 76 is shown for remote access to files from a sitethat is located behind a firewall 86, the present invention provides thesame functionality for computers/devices which are not located behind afirewall. Thus, for example, a user who is away from his or her mainstores of data, may access, use and even download files with a devicesuch as a PDA 77 MP3 player 78 or cell phone 79 with wireless networkcapability. The security protocol offered by the present inventionensures secure transmissions between such computers/devices, using thesecurity facilities described above. It is noted that the presentinvention is not limited to the computers/devices shown, but may be usedfor any network-accessible devices for communicating data files over anetwork, examples of which include cameras, video and/or audio recordingequipment, televisions, factory equipment, instruments, office equipmentsuch as printers, fax machines, scanners, home security equipment, homeappliances and others, including those listed above in thespecification. Further, also access and control system 54 is shown inthe example of FIG. 9, it is noted that any of the other access andcontrol systems or connection servers described herein may be used forthis functionality.

Using the secure access and control features of the present inventionensures that only a specified user or users can gain access to datafiles across the network, and that any information sent is encrypted andsecure from theft or reading by unauthorized users. These features areprovided even to computers/devices which are not located behind afirewall, even those that access the network via wireless communication.The present invention enables a user to access devices 18 a-18 n of allthe computers that a user would normally have access to, from any singlelocation throughout the world where the user has network access,assuming all of the computers also have network access.

It is further noted that any of the computers shown in FIG. 9 mayfunction as a DataClient, the device or devices of which other computersaccess to share a file or files from. Also, this may be a distributedsystem. For example, a user from the location of laptop 76 (which is thelocal computer or UserClient in this example) may access a remote device18 a in DataClient 72 (i.e., home computer) to share a personalfinancial statement, and also access a second remote device 18 e inDataClient 78 (MP3 player) to share a song or two from its personalstorage.

FIG. 10 shows another example of the present invention, in which onlythree computers/network-enabled devices 72/18 a, 74/18 b, 76/18 c areshown for simplifying the description of the functionality. AlthoughFIG. 10 only shows three computers for the purpose of descriptionsimplicity, the current invention can be applied to a larger or smallernumber of computers. As shown in FIG. 10, each of computers 72, 74 and76 has its own central processing unit 72 c, 74 c and 76 c,respectively, storage device 18 a, 18 b and 18 c, respectively and I/Odevice 72 i, 74 i and 76 i, respectively, for network communications. Asnoted above, any of computers 72, 74 and 76 may be a desktop computer,laptop computer, personal digital assistant, network attached storagesystem, file server or other computing device that has CPU, storage andconnectivity capabilities.

Connection Server 14 is included in the example of FIG. 10 in order toprovide authenticated, authorized, secure, encrypted,firewall-compliance and point-to-multipoint collaborative communicationsamong computers 72, 74 and 76 in the manner described above, and whereeach of the computers may be protected behind a firewall or a proxysystem 82, 84, 86 as also described above. It is also understood thatthe current invention may also be implemented using a VPN that is set-upto allow computers 72, 74 and/or 76 to securely communicate over a widearea network. Furthermore, in such cases where security is not aconcern, the present invention may be implemented without a VPN. In thelatter two cases described, computers 72, 74 and 76 directly communicateamong each other, without use of a connection server 14.

The example of FIG. 10 also implements database 52 to manage userinformation and user devices. Although database 52 is shown to beconnected to connection server 14, variations of this are possible, suchas, where database 52 may be connected to any one or more devices orcomputers accessible through a computer network, for example.

The present system provides a remote file system that utilizes astrategic data caching management that is designed for optimizedperformance in a wide area network. The system utilizes local storagedevices, such as storage devices 18 a, 18 b and 18 c in the example ofFIG. 10, that have high-performance data access capabilities to providelocal upper layer applications, such as applications 72 a, 74 a and 76 ain the example of FIG. 10, with similar if not the same high performancedata access to the remote storage devices. Strategic cache managementcan be implemented as a software program that manages operations ofcached data on a local storage device. As shown in FIG. 10, strategiccache management 72 s, 74 s and 76 s are implemented to manageoperations of cached data on local storage devices 18 a, 18 b and 18 c,respectively.

Functionalities of the strategic cache management may be divided intotwo parts, as exemplified in FIG. 11. In this example, only twocomputers 72, 74 are shown, again for purposes of simplicity ofexplanation. Computers 72 and 74 are connectable across a wide areanetwork by any of the means described above with regard to FIG. 10, forexample, via a connection server 14, or directly connected, with orwithout a VPN. Also as noted previously, more than two computers can beso connected and function according to the principles describedhereinafter. As shown, strategic cache management application or process72 and strategic cache management application or process 74 are eachseparated between a user module 72 su and 74 su, respectively, to manageUserClient operations, and a device module 72 sd and 74 sd,respectively, to manage DeviceClient operations.

User module 72 su, 74 su may be a software module that accesses remotedata on a remote storage device (i.e., in the example shown, user module72 su accesses data from remote storage device 18 b and user module 74su accesses data from remote storage device 18 a) and manages cachingoperations of the remote data on its local storage device (18 a for usermodule 72 su, 18 b for user module 74 su). Device module 72 sd, 74 sdmay be a software module that manages a local storage device (i.e., inthe example shown, device module 72 sd manages local storage device 18 aand device module 74 sd manages local storage device 18 b) that is beingaccessed and shared by user modules 72 su, 74 su over the network.Device modules 72 sd, 74 sd also manage caching operation of the localdata on their local storage devices for the purpose of optimizing datasharing capabilities. For example, as shown in FIG. 11, a user mayoperate application 72 a (e.g., Windows Explorer®) to access remotestorage device 18 b at computer 74 over a wide area network. In thatcase, application 72 a would make data access requests to user module 72su, which in turn will manage the process of data caching and datatransmission from device module 74 sd at computer 74.

User modules 72 su, 74 su may implement standard file systemfunctionalities, thence users can operate the user modules usingstandard operating system interfaces such as Windows Explorer®, NetscapeNavigator® or the like to navigate and browse through the remote filesystem. Consequently, local applications such as Windows Explorer®,Microsoft Word®, Adobe Acrobat®, etc., may seamlessly interface with auser module 72 su, 74 su as if it is an additional storage device. Localapplications may request a user module to perform file systemfunctionalities that may include but are not limited to: create file,create directory, delete file, delete directory, open file, close file,file exists, flush file, get file information, set file information, isread only, read file, seek file, rename file, search, copy, write fileand truncate file, as well as viewing and performing any of theaforementioned functionalities on previous versions of files. Oneexample of facilitating user modules 72 su, 74 su to function likeadditional storage devices to their local operating systems to providestandard file system interfaces for local applications is to implementServer Message Block or Common Internet File System (SMB/CIFS) serverfunctionalities. Although the current invention describes the use ofSMB/CIFS protocol, it can be understood that other implementations thatallow the user module to provide file system functionalities to thelocal operating system may alternatively be applied. SMB/CIFS protocolis an application-layer protocol that can provide drive-sharingfunctionality over a computer network. SMB/CIFS protocol can be carriedby various data transport protocol such as TCP/IP. Although the currentinvention describes the use of TCP/IP protocol for SMB functionalities,other implementation varieties may also use other data transportprotocols that have similar characteristics.

In cases where a local operating system is already running an SMB serverthat listens on a standard TCP/IP port number for the SMB server (e.g.,port 445), the user module may need to be configured to provide SMB/CIFSfunctionalities by listening on a different TCP/IP port number that isnot being used. Consequently, to allow local SMB clients to have TCP/IPconnections to user module 72 su, 74 su on the standard SMB server port,it is necessary to perform network address translation of IP datapackets. A networking driver may be used to filter all of the inboundand outbound IP packets on the local system and perform network addresstranslation. Such filtering capability may be developed using MicrosoftNDIS (Network Driver Interface Specifications) Network Driver, availablefrom Microsoft, Inc., Redmond, Wash., for example, or using WinpkFilter2.0 from NTKernel.com, for example. Other available network drivers mayalternatively be used.

Referring to user module 72 su as an illustrative example, a virtual IPaddress and port number (e.g., 10.10.10.10, port: 445) may be designatedfor user module 72 su. However, user module 72 su may actually listen onport 18025 on the local operating system, to avoid conflicts with anexisting SMB server on port 445. All IP packets with the virtual IPaddress and port number are modified to have the local IP address andport number that the user module uses. Continuing the example, IPpackets that contain virtual IP address and port number such as:10.10.10.10 port 445 are modified to have 127.0.0.1 port 18025. Hence,IP data packets bound for the virtual IP address are routed instead tolocal user module 72 su that runs the SMB server. In summary, to thelocal operating system 72, local user module 72 su may appear to be aremote file system by use of the virtual network address.

A user module running SMB/CIFS server functionalities may also beautomatically mapped as a network drive to the local operating system.For example, user module 74 su may represent the “C:” drive on remotecomputer 74, but be mapped to the “V:” drive on the local system 72. Tohelp users to better identify storages devices on remote computers, suchdrive mapping information may be stored in a database 52, with a systemsuch as shown in FIG. 10; hence such information is retrievable via thenetwork to provide consistent definition throughout the entire system.For example, an Office Computer 72 drive may always appear to be the“V:” drive on the a Home Computer 74 and on a Laptop Computer 76.

Additionally, database 52 may also store file-access permissionmanagement information. Such permission management information can bedownloaded and stored in the user module's local cache to determine whatdata access functionalities that the particular user module can performand to which files or directories may be accessed on which remote devicemodules. Database 52 may also store authentication data, including, butnot limited to usernames and passwords, biometric data, and the like.Accordingly, a system administrator (or user that controls a privatepersonal network) may centrally set up permissions and/or authenticationdata for users of the network, as well as centrally store such data.Functionality may extend to the ability to set up groups or classes ofusers, where each group or class has a different set of permissionslevels and where all users in the same group or class are assigned thatsame set of permissions levels assigned to the group or class.Corrections to such data can then also be sent out point-to-multipointto all users/members of the network affected by the centralized changesthat have been made. Likewise, software updates (e.g., to the system)and/or messages to the users may be sent out point-to-multipoint to allusers/members of the network affected by the centralized changes thathave been made.

A process of strategic data caching will be more fully understood byreference to the flow charts of FIGS. 12 and 13, as well as to FIGS. 10and 11. FIG. 12 describes a file overhead data management process, whileFIG. 13 describes a file data management process. Referring to FIG. 11,an example is described in FIG. 12 where a user employs application 72 a(for example, Windows Explorer®, Microsoft Word®, or Adobe Acrobat®,etc) to access remote storage device 18 b which is local to computer 74.Initially, user module 72 su may be authenticated and authorized toaccess device module 74 sd via connection server 14 in instances where aconnection server is part of the system. Otherwise, authentication andauthorization protocols may be implemented on the computers 72,74.Application 72 a makes data access requests to the local user module 72su that provides SMB/CIFS server functionalities.

Targets of the data access requests that are made can generally beclassified into two main categories: file overhead information and filedata. File overhead information pertains to file attributes orproperties that may include but are not limited to file name, file size,folder status, last modified date, created date, etc. Every file orfolder has file overhead information that can be used by localapplications to get properties information about a file or a folder. Forexample, Windows Explorer® may use file overhead information to list ordisplay directory data structures for user navigation purposes. On theother hand, file data is the actual binary content of a file. Forexample, the file data of a digital photograph contains the actual jpegbinary data that can be used for graphical display and/or printing.

The present invention provides a file subscription process that utilizesthe strategic data caching system to improve data access performance ofremote storage devices over a wide area network. Particularly, the filesubscription process is designed to optimize network bandwidthrequirements for transmission and validation of both file overheadinformation and file data between user modules and device modules. Thestrategic data caching system also allows latency of the overall remotedata access activities to be significantly improved. Both bandwidth andlatency improvements are especially important for an efficient sharingperformance of remote storage devices in a wide area networkenvironment.

File subscriptions can also generally be divided into two categoriescalled file overhead subscription and file data subscription. A usermodule may use a file overhead subscription to serve data accessrequests by local applications pertaining to overhead information of afile or a folder. A user module may use a file data subscription toserve data access requests pertaining to binary data content of a file.

Event 1202 initiates a file overhead subscription process, where theuser may wish to browse through files and directory(ies) of the remotefile systems of storage device 18 b. Once user module 72 su receives arequest by the user to search or list contents of a particulardirectory, it may first check its local cache to find whether such fileoverhead information is available and valid at event 1202. Validity isdetermined by whether or not the user module 72 su is currently engagedin an active subscription to the device module of the remote storagedevice holding the information that the user desires to access. If anactive subscription period is running, then it is determined at event1204 that the file overhead information is available and valid, asdetermined by a date time stamp contained in the local cache and apredefined active subscription period, both of which are describedbelow. In this case, the process goes to event 1214. If it is determinedat event 1204 that the file overhead information requested is notavailable or valid, the user module 72 su sends a request over thenetwork to device module 74 sd to subscribe to authorized overheadinformation of the associated directory and its contents in storagedevice 18 b, at event 1206.

In response to the request at event 1206, if user module 72 su isauthorized and has permission to receive the requested file overheadinformation, device module 74 sd sends the requested file overheadinformation to user module 74 su over the network at event 1208. Oncetransmission of the overhead information has been completed, user module72 su stores the file overhead information along with its arrival timestamp in the local cache of storage device 18 a at event 1210. Hencesubsequent requests to the particular directory can be served directlyfrom the local cache. At event 1212, device module 74 sd also stores inits local cache (of storage device 18 b), file overhead subscriptioninformation that specifies that user module 72 su has an active fileoverhead subscription of the associated directory and its contents. Aspart of the file overhead subscription information, device module 74 sdalso stores the estimated arrival time stamp of the associated fileoverhead information for user module 72 su after the successfultransmission.

The length (i.e., time duration) of an active subscription may bedefined for the entire system. For example, if the length of an activesubscription has been defined to be 30 minutes, then starting with thetime of the estimated arrival time stamp and for the next 30 minutes,device module 74 sd is responsible to send any updates to user module 74su regarding the file overhead information of the associated directoryand its contents, as device module 74 sd and user module 72 su areengaged in an active subscription over that time period, see event 1214.Consequently, starting on the arrival time stamp and for the next 30minutes, in this example, user module 72 su can trust the file overheadinformation stored in its local cache to be valid and can be directlyused to serve subsequent data access requests to the particulardirectory or its contents. Either user module 72 su or device module 74sd may cancel the file overhead subscription at any time during activesubscription status, for example, in an emergency instance where one ofthe computers involved needs to be shut down.

The file subscription process described reduces network bandwidthrequirements and latency of the overall remote data access activities,both of which are especially advantageous when working across a widearea network. One of the features that provides these advantages, isthat even if the user uses local applications to continuously orrepeatedly makes data access requests to a remote directory in remotestorage device 18 b, user module 72 su only needs to make a networkrequest once during the period of the active subscription, since afterthe initial request, the information is stored locally at the site ofthe user. When the file overhead subscription is no longer active,whether due to cancellation by the local user module 72 su, cancellationby device module 74 sd or expiration of the active subscription period,for example, device module 74 sd stops updating user module 72 su withchanges on file overhead information associated with the particulardirectory and its contents. File overhead information may be accessedand subscribed to based on one directory at a time, per a user request.Alternatively, other methods of access and subscription may beimplemented to further optimize transmissions of file overheadinformation. For example, device module 74 sd may provide file overheadinformation not only on the requested directory and its contents, butalso on parts or all of the sub-directories and their contents stored instorage device 18 b which are authorized and permitted to be sent touser module 72 su. Further, determinations as to which files/directoriesof which overhead information will be additionally sent may be madebased on user specifications, structures of the associated directory orprobabilistic analysis of directory-browsing behavior patterns.

The user, through the use of local applications, such as application 72a, for example, may make changes to the downloaded file overheadinformation as well as create or delete files and folders. When thisoccurs, user module 72 su sends any such modifications, creations anddeletions to device module 74 sd. After receiving the modifications,creations and/or deletions, device module 74 sd consults the fileoverhead subscription information to identify any other connected usermodules that are actively subscribed to the modified file overheadinformation. Subsequently, modifications of file overhead informationare transmitted by device module 74 sd to all of the identified usermodules. Further, device module 74 sd may also listen to file accessevents from its local operating system to detect any changes to filesand folders that are actively subscribed by connected user modules.Device module 74 sd transmits any locally detected file overheadmodifications (detected through the described listening) to allconnected and actively subscribed user modules.

When the user in the example above browses through remote directorystructures as described above, user module 72 su may only subscribe tofile overhead information of the associated files and folders that arebrowsed. At this point, the local application 72 a being used by theuser may not yet have requested user module 72 su to perform any dataaccess functionalities such as a read operation of the actual binarycontents of the files, for example. At this time, the user may only bebrowsing or navigating through files and directories before actuallyaccessing any file binary contents. Consequently, no file binarycontents are downloaded at this time during the process. This avoidsunnecessary data transmissions and associated network bandwidthrequirements.

Once a request is made by an application to perform an operation on theactual file data, however, a file data subscription and managementprocess is run by the system. Referring now to FIG. 13, a process forfile data subscription and management is further described. File datasubscription shares the same basic principles as the file overheadsubscription described above, in that remote data are locally cached andconsidered valid during an active subscription period. In the case offile data subscription however, the remote data is actual file binarydata rather than the file overhead information, as noted above.Continuing the example described with regard to FIG. 12, once an activesubscription has been opened and it is assured that the file overheadinformation is available and valid, the user may launch application 72 a(e.g., a word processor program, spreadsheet, or other utilityapplication, etc.) to open and read a particular file such as“myDocument.doc” on storage device 18 b. Upon receiving a data accessrequest from application 72 a, user module 72 su searches its localcache in storage device 18 a to determine whether file data for“myDocument.doc” is available and valid at event 1300. If the file datais determined to be available and valid at event 1302 (i.e., file datais present in local cache and an active subscription is in progress),user module 72 su is able to provide the data to application 72 adirectly from the locally stored data at event 1304. If the file data isnot available or valid at event 1302, then user module 72 su sends anetwork request to device module 74 sd to start a file data subscriptionon “myDocument.doc”, at event 1306. Along with the request, user module72 su may also indicate any version numbers of “myDocument.doc” that areavailable in its local cache.

At event 1308, upon receiving the request from user module 72 su, devicemodule 74 sd searches its local cache in storage device 18 b todetermine whether a reference file for “myDocument.doc” has beenpreviously created. If it is determined at event 1310 that a referencefile for “myDocument.doc” has not been previously created, then devicemodule 74 sd makes a copy of “myDocument.doc” for a reference file inits cache at event 1312. Device module 74 sd may also initialize asequential version numbering system to officially enumerate versions offile data. For example, “myDocument.doc” may initially be given anofficial version number one. Hence forward, if the actual file of“myDocument.doc” is changed, device module 74 sd can compare thedifferences between the changed file and the original reference file tocalculate what is referred to as a “Delta” which may be used to generatethe next version of the file (in this case, version two).

As already noted, file data is the actual binary contents of a file,which may contain, for example a digital picture, music, text, graphicaldata, or the like or combinations of these. Unlike file overheadinformation, file data can vary greatly in size. For example, anelectronic document may contain a few pages of 2 kilobytes of data or afew thousand pages of 2000 kilobytes of data. The present systemrecognizes that changes that occur to file data are mostly correlated.For example, when the user edits a 2 megabytes document, there is a highprobability that a significant part of the document remains unchangedfrom the original document prior to editing. Since the current inventionutilizes local storage devices to perform caching operations, theallocated storage size for caching purposes can also directly affectoverall system performance. Because of the limited capacity of storagedevices, the current invention recognizes that optimizing cachingoperations to improve the efficiency of storage device utilization canincrease the overall system performance. Accordingly, spatial and/ortemporal compression of file data may be performed by the system tooptimize cache operations and data transmission.

Spatial compression may be performed on binary data to reduce redundancyon the binary data itself. Spatial compression can be applied fortransmitting as well as for caching of file data. Temporal compressionmay be performed to extract differences between multiple versions offile data (binary data) that may be created over time. For example, ifthe original reference file (version one) contains 1800 bytes at thetime it is established in the cache, but then later is modified by auser so that at the time after editing, it contains 1880 bytes, temporalcompression may be performed on both versions of the file to create adifference file or a “Delta” file that contains the differences in thebinary contents between the original reference file and the edited file.A Delta file may also extract data redundancy even if many segments ofthe reference data have been shifted by different amounts. Hence byapplying a Delta to a reference file, versions of the associated filecan either be upgraded (e.g., updated to a newer version) or downgraded.For example, analyzing binary differences between the original referencefile (version one) and the edited file (version two) may be performed tocreate a Delta file which may be referenced as Delta 12. Consequently,file version two can be reconstructed by applying Delta 12 to theoriginal reference file (version one). The system uses a table to keeptrack of the history of the file and changes that have been made overthat history. If the table is relatively large, then it is more likelyto have a record of previous data in the table and find more differencesbetween the current file and one or more previous versions. If the tablefor this particular file is relatively small, however, there will likelybe little to match and therefore the resultant Delta is larger, sincewhatever cannot be compared to be unchanged, must be sent in the Deltafile. A reversal process is also possible, by creating Inverse Delta 21from analysis of Delta 12 and the original reference file (version one).In such a case, Inverse Delta 21 can be applied to downgrade the editedfile (version two) to the original reference file (version one).Temporal compression allows significant compression of data whendifferent versions have much of the same binary content, because a deltafile only contains binary changes. As result, multiple versions of afile data can be differentially transported or cached in forms of deltasrather than whole contents. In addition, multiple deltas based on acommon reference file version may also be merged to further optimizetemporal compression among file versions. For example, Delta 12 andDelta 23 may be merged to form Delta 13.

If it is determined that a reference file already exists at event 1310,a determination is made at event 1314 as to whether user module 72 suhas any versions of the requested file in its local cache in storagedevice 18 a. This determination can be made based upon the request sentto device module 74 sd by user module 72 su, since user module 72 susends any version numbers that it has of the requested file, describingall Delta and Inverse Delta files contained in it cache for therequested file along with the request. It is further noted that devicemodule 74 sd may also already have one or more Delta and/or InverseDelta files that represent previous file versions available in itscache. In any case, device module 74 sd analyzes any available fileversion numbers indicated by user module 72 su in the file datasubscription request. If there is at least one Delta or Inverse Deltabased on the available cache information of the requested file (e.g.,“myDocument.doc”), device module 74 sd determines at event 1316 whetherto send Delta files (“Deltas”) and/or Inverse Delta files (“InverseDeltas”) and use the available file versions that user module 72 sucurrently has in local cache, or to send a reference file instead tooptimize data transmission. The reference file is also sent when it hasto be newly created, as at event 1312. Alternatively, device module 74sd simply instructs user module 72 su to use a particular file versionthat user module 72 su already has in local cache when it is determinedthat that version is the same as the current reference file (“currentofficial version”). This might be the case when the associated file datahas not changed since the previous active subscription to the file databy user module 72 su, for example.

If, at event 1314, it is determined that user module 72 su does not haveany file data regarding the requested file stored in cache memory instorage device 18 a, the device module 74 sd transmits the referencefile to user module 72 su at event 1318. Device module 74 sd and usermodule 72 su both record time stamp data as to when the transmission ofreference file(s), Delta file(s), Inverse Delta file(s) or fileinstructions have been successfully completed, at event 1320, to markthe starting time of an active file data subscription. Device module 74sd also stores file data subscription information in its local cachethat indicates that user module 72 su has a file data subscriptionstarting on the associated time stamp to “myDocument.doc” and theparticular file version that is being subscribed to (e.g., file versionnumber one in the case where the original reference file is sent). Byrecording file data subscription information that contains file versionnumbers that are transmitted to user modules, a device module can usethis to later analyze the level of significance of previously storedfile versions for optimizing utilization efficiency of local storagedevices for caching operations.

As user module 72 su receives the file data from device module 74 sd,the file (i.e., file data that makes up the file) is stored in the localcache of storage device 18 a. Just as described above with regard tofile overhead subscription, once the file data has been locally cached,the file data may be used directly by user module 72 su to serve dataaccess requests pertaining to the file's binary contents during theactive file data subscription period without making any network requeststo device module 74 sd. Also similarly, device module 74 sd isresponsible to send file data updates associated with the file(s) havingbeen transmitted (e.g., “myDocument.doc”) to user module 72 su duringthe active file data subscription period (e.g., 30 minutes). In thisexample, the active file subscription period may have officially startedwhen user module 72 su has successfully received the entire content ofthe reference file.

It should be noted here, that although the descriptions provided withregard to the example above and below refer to user module 72 su anddevice module 74 sd, this is for exemplary description only, as the samefunctionality is provided by user module 74 su and device module 72 sd.That is, a user from computer 74 may use user module 74 su, in the samemanner as described above by a user of computer 72 employing user module72 su, to access and control subscriptions to remote devices such asremote module 72 sd controlling remote storage device 18 a. Also, it isnoted that subscriptions may be processed in both directions, i.e., useof computer 72 to access remote files from computer 74 and use ofcomputer 74 to access remote files from computer 72, concurrently.Furthermore, it is noted that the invention is by no means limited toaccess of remote files from a single remote storage device, as any usermodule that is connectable over a wide area network may remotely accessdata from multiple remote storage devices, as long as each remotestorage device is connectable with the wide area network and each isassociated with a device module, respectively. Similarly, any devicemodule associated with a storage device may provide remote access tomultiple user modules over the wide area network.

As noted above, user module 72 su provides data access functionalitiesto the local applications. As a result, user module 72 su is capable ofcontrolling data access behavior such as controlling the flow of data tothe requesting local applications. For example, when a local application72 a performs read requests for parts of file data, user module 72 sucan accept the requests and wait for the entire file data to besuccessfully received before completing the requests. This methodprovides additional data access reliability by preventing any localapplication from experiencing possible interruptions of file datatransmissions over the network. However, by this method, localapplication 72 a has to wait for all of the file data making up therequested file to arrive before being able to perform any readoperation. Depending upon the application usage, user module 72 su mayalternatively serve and complete one or more read requests for file dataas soon as the requested parts of the file data are received from devicemodule 74 sd. In this case, local application 72 a can begin readingparts of the file data during transmission of the remainder of the filedata.

During file data transmission, user module 72 su may also request devicemodule 74 sd to prioritize transmission of file data parts, based ondata access behavior patterns of local application 72 a. For example,local applications may request to read file data sequentially frombeginning to end or disorderedly through out the entirety of the filedata. By minimizing the waiting period for read requests, user module 72su reduces the overall data access latency, compared to simply waitingfor an entire file to be transmitted before beginning any servingoperations to the local applications. For example, local application 72a may open, read and play a music file such as an mp3 file. By servingportions of the file data as they are transmitted, the user is able tohear the music being played by local application 72 a as soon as therequested parts of the file data are received by user module 72 su,while the remainder of the mp3 file continues to transmit. Consequently,depending on the available network bandwidth, the user may be able tocontinuously hear the entire music file without interruptions duringtransmission of the associated file data.

In instances where the user applies a local application to modifyassociated file data by performing writing requests, user module 72 su,upon receiving a writing request, may check its local cache to see if anassociated final copy of the reference file has been created. A finalcopy is initially an exact replica of a reference file before anymodifications. Writing operations performed by user module 72 su onbehalf of a local application 72 a can be applied to the final copy. Thefinal copy is created for the purpose of computing temporal compressionto create a Delta file between the final copy and the reference file. Afinal copy may only be created as soon as the first writing request isreceived to conserve local cache storage capacity. Before computingtemporal compression, user module 72 su may also wait for a sufficientamount of time to elapse, e.g., about five to about 15 seconds, afterthe last writing, deleting or renaming request performed to theassociated file data to ensure that local application 72 a hastemporarily stopped modifying the file data. A local application maytypically request writing operations in a series of multiple attempts.

Another method of modifying file data contents by a local application isto request user module 72 su to create a temporary file, perform writingoperations on the temporary file, delete the associated file data andrename the temporary file accordingly. User module 72 su may be able todetect the creation of a temporary file by inspecting the creationparameters (e.g. “hidden” attributes) or the associated file name (e.g.,ending with “. tmp”, or the use of certain characters such as “˜”).Thus, user module 72 su is able to detect the temporary characteristicsof a newly created file. Local applications may typically use atemporary file to store intermediate computation results or to ensurereliability of data transactions. In order to minimize network bandwidthrequirements, user module 72 su may keep data access operations oftemporary files on its local cache only, without informing device module74 sd.

After creating a Delta file by performing temporal compression betweenthe final copy and a reference file of a file data (e.g., final copy andreference file of “myDocument.doc”), user module 72 su may then informdevice module 74 sd of the new file data update. Device module 74 sd mayaccept the new file data update which in turn initiates transmission ofthe Delta file from user module 72 su to device module 74 sd. Afterreceiving the Delta file, device module applies the Delta file to updatethe reference file of the associated file data in its local cache aswell as the actual file on the remote storage device 18 b. Device module74 sd may also enumerate the new file data update with an officialversion number, generally the next unused number in a sequence ofnumbers for assignment to file versions. Device module 74 sd may alsosearch in file data subscription information, in local cache, for otherconnected user modules that are actively subscribed to the associatedfile data, and transmit the Delta file update to the other activelysubscribed user modules using a point-to-multi-point data transmissionprocess.

Device module 74 sd may also listen to file access events from its localoperating system to detect any changes to binary contents of files thatare actively subscribed to by one or more connected user modules. Devicemodule 74 sd may perform temporal compression based on changes to binarycontents of a file discovered during listening, and transmit the a Deltafile resultant from the temporal compression to all connected andactively subscribed user modules. After receiving the Delta file, eachactively subscribed user module updates the file data stored in each'srespective local cache with the new version by applying the receivedDelta file to the file reference, as well as to the final copy, ifavailable.

After updating the file data with a new Delta, both device module 74 sdand the actively subscribed user modules may also create and store anassociated Inverse Delta file in the local cache associated with eachrespective module. An Inverse Delta file allows device module 74 sd andthe actively subscribed user modules to undo the updating process of thefile data that was performed when applying the Delta file, hencereturning the file to a previous version. By storing Inverse Deltafiles, device modules and user modules can efficiently keep previousversions of file data in terms of Inverse Deltas (differential updates)rather than storing the entire content for each version of the samefile. This greatly reduces the utilization of local storage devices forcache operations, making the system markedly more efficient.

The ability to reverse to previous versions may also be used to providefile back up capabilities. Device module 74 sd or user module 72 su mayprovide the user with the ability to restore the file data to a previousversion that is available in the local cache of the module performingthe backup. Device module 74 sd may efficiently instruct activelysubscribed user modules to perform such changes without sending theactual Inverse Delta file or files required to perform the changes, aslong as the necessary Inverse Delta file(s) are located on the localcache(s) of the user module(s) actively subscribed. The number ofInverse Delta files that are stored locally in cache may be varieddepending on user-specified operating parameters or the available localstorage capacity for caching purposes.

Of course, the present system can alternatively be used to back up filesfrom one or more computers to a storage device associated with anothercomputer located remotely across a wide area network from one of more ofthe computers being backed up, and/or to one or more networked attachedstorage devices, without the use of Delta and Inverse Delta files,although this process has the potential to be quite time consuming. Suchbackup processing can be carried out securely and even across two ormore firewalls, even when the two or more firewalls use differentcriteria for restriction of communications traffic therethrough.

Another purpose for storing Inverse Delta files is to facilitateefficient conflict resolutions among varying file data versions. Sincethe processes described above allow a binary file to be simultaneouslyused by multiple user modules over a computer network, a conflictingsituation may arise when multiple user modules submit different Deltaupdates to device module 74 sd that are based on the same reference fileversion of a particular file data, for example. In this situation, anInverse Delta file may be applied to the reference file if a Delta filebeing submitted by a user module is based on a previous version of thereference file, after which the device module applies the Delta filereceived from the user module, and then reapplies a Delta file that isthe inverse of the Inverse Delta file originally applied, therebymerging and applying the Delta files to make a current, up to datereference file (official version). Alternatively, the Inverse Delta fileand the Delta file received from the user module may be merged to formanother Delta file that is applied to the reference file to achieve thesame result.

Another situation that may give rise to file data version conflict isoffline usage. The present invention may allow user modules to continueto serve data access requests directly from their respective localcaches even after the user modules are no longer connected to thenetwork, or when network communication is not available. For example, auser may take computer 72 on an airplane and continue to edit“myDocument.doc” even though she or he does not have any networkconnection available. During the time that computer 72 is offline ordisconnected from the network, user module 72 su may still be able tostore changes that are made with respect to the file data associatedwith “myDocument.doc” and/or file overhead information in storage device18 a, hence providing normal storage device functionalities to the localapplications. When the network communications are resumed, user module72 a detects the online condition and begins contacting device module 74sd to submit the changes that were made during the offline period. Whileuser module 72 su was offline however, device module 74 sd or one ormore other user modules may have updated the version of“myDocument.doc”. As a result, a version conflict situation occursbecause the Delta update submitted by user module 72 su is not based onthe current official file reference version in this situation. For thisreason, device modules are configured to store only one version, of afile data to be the current official version. All other versions aregenerated based upon Deltas which define the revisions to the file.

Version conflicts may be resolved by choosing only one version to be theofficial version among the possible choices or by creating a new filedata with a new name to save the new changes. The decisions on versionconflict resolutions can be made automatically by pre-defined policiesor by the user at the time of conflict. In the example where a versionconflict is to be resolved by choosing only one version to be theofficial version among the possible choices, device module 74 sd mayimplement such resolution efficiently among the connected and activelysubscribed user modules through use of the previously computed DeltaInverse files. For example, device module 74 sd may be able to send newDelta files to a user module and instruct that user module to return toa particular previous version number (by applying associated InverseDelta files) before applying the new Delta files. As a result, theavailability of Inverse Delta files allow device modules to effectconflict resolutions using differential Delta and/or Inverse Delta filesamong user modules with minimum data bandwidth requirement over acomputer network.

As an alternative to the creation of file data subscriptions that areinitiated by data access requests made by local applications to a usermodule, as described above, file data subscriptions may also be createdbased on user-specified instructions to always have file datasubscriptions to certain files or/and directories. Consequently,referring to the example shown in FIG. 11 once again, device module 74sd may initially be required to transmit numerous file data contentsthat are requested by user module 72 su, so that these contents arealways available in the local cache associated with user module 72 su.During the initial transmissions, local applications may also ask usermodule 72 su to perform data access requests to a certain file data thatis not et stored in its cache. To improve data access performance forlocal applications, the system may provide transmission priorities thatcan be adjusted based on data access requests made by localapplications. As such, file data that are requested by localapplications are considered high priority and are requested to betransmitted first to user module 72 su to be stored in the local cache.As a result, user module 72 su may request device module 74 sd totemporarily suspend transmission of file data with lower priorities andto allocate more network bandwidth for transmission of file data withhigher priorities.

As previously described, the system utilizes local storage devices toperform strategic data caching operations. For security reasons, thestored file data and file overhead information can also be encrypted, ina manner as described above, for example, or according to other knownencryption techniques, and hence readable only to an authorized user. Byhaving cached file data, both device modules and user modules are ableto perform differential file updates with minimum network bandwidthrequirement. As also noted, cached file data also facilitates back-upcapability in both device modules and user modules which are able torestore file data to previous versions. Because of the limitedcapacities of storage devices, however, it may be impossible to cacheall data access activities that can accumulate over time. Accordingly,the system provides for levels of significance to be assigned to thestored file data. Hence both device modules and user modules may decidewhich file data to keep or to delete for optimizing utilizationefficiency of the local storage devices for caching operations. A cachedfile data may contain multiple file versions where each version may havea different significance level. The significance levels may be set by auser or IT personnel and may be based on one or more of the followingfactors: the time period that has elapsed since a particular fileversion was last accessed (e.g., the longer the time period, the lowerthe relative significance level); consideration of a particular fileversion for backup purposes (e.g., a user may specified a predefinednumber of file versions to be kept for backup purposes); and versionconflict probability. With regard to version conflict probability,device module 74 sd is able to track file data version numbers that eachsubscribing user module has in its respective local cache, as notedabove. With this capability device module 74 sd can determine whichsubscribing user modules do not have the current official file dataversion number (for example, a user module might have been offline, thusunable to receive any file data updates), and note that there is apossibility of version conflict. In this case, certain availableversions of the associated file data may be given higher significancelevels, since it is probable that there will be a conflict situationwith the user module(s) that do not have the current official file dataversion. Device module 74 sd, by tracking, can determine which officialfile version each user module currently has, and from that, determinewhich Deltas/Inverse Deltas should be assigned higher priority. Hence ifthe version conflict occurs, it can be differentially resolved by usingthe higher priority Delta or Inverse delta files which will bepreferentially stored.

During setup of the system, the user, or other IT personnel, such as anIT manager in an office setting, selects the files in each storagedevice 18 a-18 n that are to be available to be accessed/shared. Then,when a computer with an enabled device having settings allowing fileaccess connects with the network, either through connection server 14,or as otherwise described above, the device module of that computeraccepts requests from any connected, authorized user module of anothercomputer that is connected to the network and wishes to access the filesof the first-mentioned computer. Note that file access may be permittedas to an entire drive (e.g., “C drive”) or more than one drive; to oneor more folders; or may be assigned to files on an individual basis. Anoted earlier, access (of various levels) may also be permitted forremote desktop control and/or to other devices, such as video cameras,video recorders, or any of the other devices noted above, for remotecontrol or monitoring thereof. As such, granular control of files and/ordevices and/or desktops that are allowed to be accessed is provided.

FIG. 14A illustrates an example of a user interface 1400 wherein the“Manage Sharing” function has been selected, such as by clicking on orotherwise selecting the tool button 1402. As shown, icons and textualdescriptions of the user's files/folders/directories/drives that areavailable to be shared for access by other computers are displayed.Additionally, in this example, the user may optionally share desktopaccess or desktop control, by clicking on the Desktop entry 1404 d andselecting the appropriate access settings. Additionally, in thisexample, the local computer controls a camera and access or control ofthe camera may be given to one or more external users by clicking on thecamera/s icon or textual description 1404 e and selecting the desiredaccess settings. Once connection between the computer sharing the file,desktop or device with the computer being granted access is made, andalert is sent from the computer granting access to the computer beinggranted access (in this example the local user). The user of thecomputer being granted access has access to the same type of userinterface 1400. By clicking on or selecting the “Alerts” function orbutton, the user can read the alert describing the fact the a particularremote user has granted access to a particular file, directory, desktop,device, or the like. The user is then presented with the option ofaccepting the grant of permission, such as by clicking on or selectingan “I accept” button, for example. The alert is then cleared and thepermission is fully granted. Of course, many other acceptance/permissionschemes may be carried out to confirm agreement of sharing between 2 ormore users, as would be readily apparent to one of ordinary skill in theart.

Once permissions have been set up for particular files and/or desktopand/or devices, and for particular users, and fully granted asdescribed, when a user module connects with the network, icons and/ortext representative of files that are accessible from remote devices maybe integrated into the file structure of the computer associated withthat user module. Thus, the files, folder, directories, etc., that areaccessible from remote devices appear automatically on the display ofthe computer associated with that user module. For example, FIG. 14Bshows user interface 1400 wherein the “Shared With Me” function has beenselected, such as by clicking on or otherwise selecting the tool button1412. Note that access has been granted to a music folder of remotecomputer 1, while access to the C: drive and the desktop of remotecomputer 2 have been granted. As noted before, different levels ofpermission may be granted. Thus, depending on the settings granted bywhoever set up remote computer 1, the local user in this example may beable to “read only”, in this case, listen to music files only from themusic folder, or may be granted additional privileges, such as theability to save new music files to the folder and/or delete or editexisting files. Similar differences in permissions levels may have beengranted regarding the C: drive from remote computer 2. Further,additional computers and desktops may also be accessed in the samemanner.

Means for file integration and manipulation may be run on each computeras a service, or alternatively, as an application or integrated with aweb browser, for example. Further, means for integration, as well asother features of the present system may reside on a gateway server,wherein all computers connectable through a private network that accessa public network through the gateway server, may run the features of thepresent system via the gateway server. Various other configurations ofthe system are also possible. FIG. 15 shows an example of three privatenetworks that are connectable with each other over a wide area network(e.g., a public network, such as the Internet). Under this arrangement,connection server 14 is run on gateway 140 of private network 130. Thesystem operates with the same functionality, so that computers/devicesin the three private networks 110,120,130 have access to files/data fromthe others in manners already described. What is different about thisarrangement is security server 58 need only be accessed forauthentication purposes to begin a session, and may also be used forcentral permissions management as wells as optionally, a globaldirectory. Advantageously, the provision of a centrally/publicly locatedsecurity server reduces costs so that each distribute connection serverdoes not have to pay an authentication service to be verified as arusted server. Clearly, many such connection servers may be provided ona plurality of private networks to function as a distributed connectionserver for the system.

Once access has been granted, communications over the wide area networkbypass security server 58 and go directly to connection server 14 fordirecting communications between the private networks. This may beparticularly advantageous for users within the private network 130 inthis example, since if communications are between two computers/devicesthat are both located in private network 130, then, after authenticationby security sever 58, all further communications may be conducted on theprivate network, by going through connection server 14 locally. Thebandwidth within private network may be much greater than that availablefor communicating over the public network. Therefore the communicationsmay be carried out much faster within network 130 using thisarrangement. Further, telecommunications costs are conserved since thecommunications do not have to go out over the public network.

Private network 110 show inclusion of at least one computer/pc providedwith a client module that may be used to access information from any ofnetworks 110, 120,130 through connection server 14 according to theprinciples of the present invention. Network 120 includes a gateway 122having a client stack that can be locally accessed by any othercomputers/devices within the network 120. As such, the client stackfunctions as a device for serving files/data to the users of network 120that are connectable via the present system. The client stack can accessinformation from the other networks in the same way that the clientmodule of the computer in network 100 functions.

The client stack may include a client module, and optionally, otherservices for interconnecting other devices to the system throughconnection sever 14. For example, the client stack 142 in network 130includes a client module 144 as well as UPnP service 146 and NetworkAttached Storage (NAS) service. UPnP service 146 functionally connectsplug and play devices to the system through server 14 so that any usersof networks 110,120 and 130, in this example, can access such devices,given the appropriate grants and permissions, of course. For example, auser of a computer in private network 110 may access one or moreaudio/video systems 152 via digital receiver(s) 150 and gateway 140 toremotely set up one or more recording sessions, to download a music orvideo file, or to simply play a music or video file from its currentlocation, among other available functions.

NAS interface 148 operably connects one or more storage device(s) 154 toconnection server 14, thereby creating central storage for users of thesystem. Such central storage may be extremely useful for backups orother storage. For example, a user may bypass all of the computersrunning on the network and just save directly to the network addressedstorage associated with the gateway 140. This arrangement also makes itpossible to reduce the cost and complexity of gateway servers, as astorage device does not have to be built into the gateway server, sincestorage of nearly any amount can be flexibly added using NAS interface148. Other arrangements are also possible as the present system isflexible and scalable. For example, connection server 14 may be locatedbehind gateway 140, within network 130 as just one other variation,though still other configurations are possible.

As to the desktop access, the local user in this example may have beengranted only viewing privileges to the desktop of remote computer 2, oralternatively, the local user may have been granted desktop controlprivileges, which inherently also includes viewing privileges. In eithercase, when the local user selects or clicks on the icon or descriptionfor “Remote 2—Desktop” (assuming remote computer 2 is online), then afull visualization of the current display of the desktop is displayed ina window on the local user's desktop (which refers to any visual displayfor any of the types of computers discussed previously, including cellphones, MP3 players, etc.). If remote desktop control privileges aregranted, not only is the desktop of remote computer 2 displayed on thelocal user's local computer, but the local user may also operate theremote computer by manipulating the desktop in the same manner as if theuser were operating the remote computer 2 locally. Thus, the remotecontrol desktop functionality is very intuitive and requires no furthertraining.

Specifically, the local user, from the local computer, may operate themouse pointer/cursor of remote computer 2 in this example, by simplyoperating the local mouse, or other instrument that serves to operate apointer/cursor on the local computer. Similarly, the local user canoperate the keyboard of the remote computer 2 by operating the keyboardof the local computer using a keyboard or alternative device that thelocal computer may use to enter keystrokes. Accordingly, the local usermay open a file on the remote computer and run an application on theremote computer, as well as edit the file and save it back to a storagedevice of the remote computer all from the local location. The controlof the remote computer by the remote desktop control is essentially thesame as a user has over his or her local computer. Further, since thedesktop of the remote computer has been integrated on the localcomputer, the desktop is fully functional. For example, the local usermay drag and drop a file from the local computer onto the desktop of theremote computer that is displayed locally, and that file is thentransferred to the remote computer. Similarly, the local user maytransfer data from the remote computer by dragging it off of the locallydisplayed remote desktop and onto the display or desktop of the localcomputer.

In the example of FIG. 14B, the local user has also been granted accessto a video folder and a video recorder associated with remote computer3. Once again the permission levels for access to such may vary. Thevariance in levels of permission that may be given for the video folderare the same as or similar to those described above with respect toother folders discussed. The video recorder permission may allow theuser to view only, or the local user may be able to set recordinginformation for recording programs, as well as view the programs, forexample. Thus different levels of granularity with regard to permissionmay be set with regard to video devices and other multi-functionaldevices.

In the example, access and control of a video camera associated withremote computer 4 has also been granted. When the local user clicks onor selects the icon/text for the camera, the local user can view throughthe camera locate in the remote location 4 and, depending upon thefunctionality of the camera, may be able to control panning, zooming,etc. from the local location. Further, since the local user has beengranted access to a video folder associated with remote computer 4 inthis instance, if writing privileges have been granted, then the localuser may choose to record video from the camera to a video file storedat the remote location, and/or to store the video to a local file thatis the stored on a local storage device associated with the localcomputer.

FIG. 14C shows a display of the local user's accessible files, drives,folders, etc., that are displayed by clicking on or selecting the “MyResources” button or function 1432. In this example, the C: Drive, D:Drive and Local Desktop are available to the local user. Further, byclicking on Manage Sharing 1402, the local user may share any of theseresources with other computers, and set permission levels that the localuser deems appropriate in the manners described above. Accordingly, thesystem facilitates rapid and easy establishment of one or more personalnetworks by a user over a wide area network such as the Internet orother wide area network, and provides secure connectivity between thecomputers on each network. A user can set up such a personal network togain access to his or her own files from any of the computer/devicetypes listed earlier, which can be as numerous and at as many differentlocations as needed. Further, using the integrated file structure of thefiles shared by other remote computers, the user may choose to run afile from the remote computer that the file is being shared by, but witha local application on the user's local computer. In this instance, thefile is run locally, but stored remotely. Alternatively, the user couldalso store the file locally, as has been described above. Still further,using the remote desktop control features, the user could run a fileapplication remotely by controlling the remote computer with remotedesktop control.

The user can also directly operate remote devices over one or more suchnetworks through the operation of a local computer connected with suchdevice or devices over the network. For example, a digital video cameralocated remotely may be operated by a local user accessing the remotecamera from a local computer that has integrated the controls for theremote camera into the local file structure, as described above. Thisfunctionality applies to all devices described herein, as the digitalcamera has been described as only one example of this functionality ofthe system.

The system provides a user a great deal of versatility. For example, auser may be away from home and office and need to send a file to acolleague that is remote from where the user is. The user can thenattach the file needing to be sent, which is remote from the user (i.e.,a remote file) to the user's email message and send it off to thecolleague. Alternatively, if the colleague and user are already set upon a private network according to the present system, and the user hashis or her own private personal network, the user can access the filefrom his or her own private network without the need for an emailmessage as the file will be directly available to the colleague as aremote file to which permissions of access have been granted.

As another example, a user who is away from home and office may need tohave a hard copy of a file located on a storage device associated withthe user's office computer. The user may connect to the office computerto his or her cellular phone using the present system, and download thefile that is needed to his or her cell phone. If the user's cell phonealso contains RF sending capabilities (e.g., Bluetooth® equipped) thenthe user may further print the file for the desired hard copy, bysending RF signals to a printer equipped to receive RF commands, whichmay be located at an office the user is visiting, or at a photocopybusiness that is available to the public, or the like.

Using the remote desktop control features a user may directly operateone or more remotely located computers, by integrating the desktop ofeach such computer onto the display of the user's local computer. Aremote desktop displayed locally can be operated with the samefunctionality that the user operates his or her own local desktop. Alocal user may practice point to multipoint connectivity and remotecontrol over a number of computers by integrating the desktop of each ofthose computers onto the display of the local computer.

Using the present system, a local user may perform searches across theone or more personal networks that he or she has established. Forexample, using the integrated file structure capability, a user mayperform a search on the storage devices of the local computer, aremotely located MP3 player, a remotely located desktop computer, and aremotely located cell phone for a particular mp3 file that the user isinterested in playing. Upon locating the file, the user would then beable to play the file locally, while still storing the file in thestorage device at whatever location the search found it. Alternatively,the user may also wish to store the file locally before, during or afterplaying.

As noted above, when data is updated, such as when a file is edited, forexample, the system may be configured to automatically update all orsome designated subset of computers on the network as soon as the updatehas been performed at one location. Computers that are offline at such atime will be automatically updated as soon as those computers go onlineagain. The persistence of the system ensures that updates are completedfor all online computers, as if there is some failure or problem duringthe update, the connection restores itself to ensure that the update iscompleted. Alternatively, the system may be configured so thatcomputers/storage devices that are remote from a file that is updatedare not automatically updated. In his configuration, the remote storagedevices do not receive the updated until its associated computercontacts the computer associated with the storage device having theupdated file and requests the file update.

User interface 1400 facilitates a fast and easy setup of a personalnetwork across a wide area network, since users need simply click on thefunctionalities desired and needed for establishing the network asdescribed above. The installation is intuitive and inexpensive as well.Advantageously, a user can be anywhere in the world that is accessibleto the Internet and the user's networks will follow the user there andbe accessible to the user over any network-enabled device, as noted. Auser may set up multiple networks with the described features, and thenetworks may be intertwined if desired. Another advantage is that a usercan change access and permission settings, or even remove shared files,or one or more computers altogether from a network almostinstantaneously by simple click operations through the user interface1400.

In addition to setting up one or more personal private networks for theuser to gain access to his or her own data on remotely locatedcomputers, devices and storage devices, the system may also be used toshare data with other users as well as allowing other users to sharedata with the user. As with personal private networks, a user may alsobe joined in multiple shared private networks, which may or may not beintertwined. Each user has full control over the access and permissionlevels that are granted to the other users regarding that users' files,devices or desktops that are to be shared, respectively. The data thatis shared may be encrypted during transfer, as described above, andauthentication may be required for each user/member of the sharednetwork. The network is compatible with multiple firewalls, but is alsosecure for use with devices that do not use a firewall, includingwireless devices, for example.

A shared network may be used for web conferencing also. For example,using remote desktop control, where each remote user has viewingprivileges of the desktop only, a local user can produce a point tomultipoint power point presentation. Alternatively a digital camera, ordigital video player may be displayed on the local desktop and viewed byremote users via remote desktop control viewing. A further alternativeis to share a folder with other users on the network, so that folder isintegrated into the file structure of the remote users. In combinationwith telephone or voice over internet protocol (VOIP), a teleconferencemay be conducted while simultaneously working cooperatively on a sharedfile or files in the shared folder. Additionally, any user can drag orsave files to the shared folder than can be accessed by the rest of theconferees for discussion thereof during the conference.

If the local computer is running Microsoft Windows®, then once the usermodule of the local computer connects with the network for the firsttime after access has been granted and thereafter until access iswithdrawn, then the user can go to “My Computer” and see that the fileintegration feature displays an icon and/or other indicator or text foreach of the folders, files, drives, directories, etc. that permissionhas been granted for. Thus, in this example, in addition to icons forthe local user's directories, etc., icons for Remote 1—Music Folder,Remote 2—C Drive, Remote 3—Video Folder, and Remote 4—Video Folder aredisplayed, since these have been integrated into the user's filestructure, and they appear along with the C drive, A drive, and anyother accessible drives, directories or files that are displayed underthe user's file structure (e.g., “My Computer”). Similar file structureintegration functionality exists with other operating systems, althoughthe display location may not be labeled “My Computer”. Connection with asystem for remote access may be carried out automatically uponconnection with the network, or automatically upon selection of one ofthe icons representing a remote file. Operations on a remote file can beperformed equally to those that may be performed on a local file. Forexample, searching, editing, etc. can be performed. Still further thepresent invention provides the ability to manually connect with thesystem as noted above, as a user option. In this way, a user may haveimmediate access to his/her files on any and all of his/her computersfrom any location globally that has Internet or other wide area networkaccess.

By selecting or “clicking on” a file icon, the user gains access to thatfile or files represented by the icon. If the icon is a directory, whenit is clicked on, the entire file structure of that directory isdisplayed, from which the user can select one or more files to work on.To work on a selected file, the user may choose to transfer the entirefile over from the remote device to the local device, and this transfercan be done automatically upon receiving the file data access requestsmade by local applications, or by simply selecting a transfer commandfrom a drop down menu, selection box, or other visual indicator on thedisplay associated with the user module. Thus, the file may be accessedand worked on in exactly the same manner that the user would work ifaccessing the file directly from the computer that stores that filelocally. No other directions or complicated procedures are required ofthe user to take a file from a remote device, and then transfer it tothe local device, and then open it up, in contrast to software that hasbeen available heretofore for such purposes. The present systemautomatically fetches the file and transfers the file into cache memoryon the local computer, in a manner as described above. By storing thefile in cache memory, this allows the user to access and use the filemore than once, without having to re-transmit the entire file from theremote device each time the user wants access to the file.

As the user works on the file, such as by adding to the file, modifyingor editing, each time that the user saves his/her work, the systemcompares the differences between the saved version of the file and theprevious version of the file, and, as long as the user module remainsconnected to the network, the changes/differences are transmitted overthe network to the remote device module, which are saved there, therebymaintaining the home file (i.e., official reference file, source file,master file or DataClient file) up to date with the latest revisions, asdescribed above. This functionality saves the user a great deal of time,since there is no need to synchronize files when the user returns to thesite of the device module. Further, there is no concern over having twodifferent versions of a file, or concern that a user is not using thelatest, most up to date version of a file. Optionally, all computersthat are connected to the network, that share a file that the user isworking on and that have a copy of that file in cache memory (or on aremote device) may be automatically updated concurrently with theupdates of the device module file, each time an update is performed,when such computers are actively subscribed, as noted above. Computersthat are not actively subscribed or are offline can be automaticallyupdated when reconnecting with the network or initiating an activesubscription.

With this functionality, when the user works on a file, it isautomatically updated in the remote device by the device module. Oncethe file has been put into the cache memory on the local computer, theuser can work locally on the file via the user module, as describedabove. Therefore if the connection to the network is lost, this will notaffect the user's ability to work on the file. Updates to the officialreference file (and optionally the file as located in other remotecomputers) obviously cannot be performed as long as the connection isbroken. Furthermore, the system is persistent and may be configured on auser computer to automatically and repeatedly attempt to reconnect withany and all remote devices which are actively subscribed to when aconnection is broken during an active subscription. The present softwarerecognizes that the file is in cache and the user can continue workinglocally when the connection is broken. When the network connection isrestored, the software automatically updates the home file (officialreference file) on the remote device via the local user module'stransmission to the remote device module, as described above (andoptionally, on any other computers where the file may reside). Thisfeature is useful not only for when a network connection is accidentallybroken, but in situations where the user moves to a location where theuser knows a network connection is not possible, as in the exampledescribed above, while flying on an airplane, or in some other locationthat is not network accessible. Even in these situations, as soon as theuser logs into the network again, the official reference file may beautomatically updated, so that when the user returns to the location ofthe home file (official reference file), the home file is already up todate.

Thus the present invention functions as if the user is storing the fileon the user's local device (e.g., local hard drive), but it is actuallyfunctioning as a distributed drive, since the local file is only beingstored in cache, and the file storage is occurring in the remote deviceby the device module. The present system is seamless and transparent,appearing to the user if he or she is actually working on a local file.There is no need to transmit video data of an image of a remote desktop,in contrast to what some prior art systems use. This greatly reducesbandwidth requirements and enables the present system to be used even ifthe user has access to only a dial-up modem connection. Further, sincethe entire file is not transferred, except on the original transmissionof a file, i.e., updates transmit only the differences between theprevious file and the edited file, this further reduces bandwidthrequirements, and reduces latency of response. It should be noted also,that an original, complete file transfer is not always necessary overthe wide are network either, since such a file transfer can often beperformed locally, such as over a local area network having high speed,high bandwidth capability, before a user disembarks to another location.

If the user wants to have a local copy of a file that has been accessedfrom a remote storage device, the user may store a local copy in thelocal storage device. Such local storage does not prevent the automaticupdates of the file in the remote storage device each time the userlocally saves the file being worked on in cache. Thus, the user isensured of having a completely up to date master copy of each shareddata file at the home location/home locations (since home locations ofshared files may vary). For example, the system may be set up such thatwhen a user is away, working on his/her laptop, a personal file isautomatically updated at the user's home computer storage device, whilea business file is automatically updated at the user's work computerstorage device.

As noted above, both user modules and device modules support compressionof transmitted data, to still further reduce bandwidth requirements. Thecompression used does not depend upon multiple versions of the data,since only an original file or differences are ever transmitted in asingle transmission, and this compression can also be used inconjunction with difference (temporal) compression. The present systemsupports difference (temporal) compression by calculating thedifferences between files (e.g., the difference between the file asoriginally downloaded and the file as edited, or the difference betweenthe currently edited file and the most recent previously edited filed).The result of the differences that are determined is referred to as the“Delta”. By transmitting only the “Delta” when updating a file, a muchsmaller file can be transmitted. By spatially compressing the “Delta” aneven further reduction in bandwidth requirement is achieved. Further,Deltas can be compressed based on similar data even if many segments ofthe data from the file have been shifted by different amounts. InverseDeltas may also be calculated to allow reverting to a previous versionof a file, should a transmission be lost, corrupted or the like.Multiple Deltas may be merged to determine a net Delta, furtherconserving storage space and/or bandwidth requirements.

Not only are Deltas used to update a file at a remote location via adevice module as a user makes edits to the file locally, but Deltas arealso all that is transmitted from a device module to a user module whenthe user module already has a previous version of the file in its cache.The device module may keep information of multiple versions (or multipleDeltas) of each file that is accessible by user modules, and keep rackof which user modules depend on each version of each file. This isnecessary to calculate the appropriate Delta to be sent to a particularuser module when access is made to update a file in a user module cache.The different versions of a file may be stored by the device module inlocal cache as different Deltas, rather than storing an entire file foreach version. Only one version of each file is considered to be thecurrent active file version. This is typically the latest update made tothe file, which may be made by any of a number of user modules, or maybe made at the site of the device module. Any particular version, otherthan the current active file version, may be stored by the device modulewhen some user module has cached that version of the file data. Bymaintaining older versions of a file, such as by storing multipleDeltas, this enables the device module to be able to accurately updatevarious versions of the file as they are received from various userclients. Each file has an associated file ID as well as a version numberfor tracking purposes. Hence Delta data may be particular to each usermodule, storing the changes made with regard to that particular usermodule.

The system may support subscriptions which help optimize performance ofthe system. Each device client information identifies all files(including folders and directories) local to the device client which areallowed to be subscribed to. Additionally, each device client keepsrecords of all particular user modules that are allowed access to eachof the files that has been set to be subscribed to. Thus, subscriptioncontrol is highly granularized. For example, a first user module may beallowed to access the entire C: drive of a device module, while a seconduser module may only be able to access a “Projects” folder within the C:drive of the same device module, a third user module may be allowedaccess to only a particular project file within the Projects folder, anda fourth user module may only be allowed access to a financial folderwithin the C: drive of the same device module. Subscription assignmentsare completely flexible from user module to user module.

Adding and removing of subscriptions can be performed either at thedevice module computer, or at the computer of the particular user modulethat the subscription pertains to. It is further noted that any of thesubscriptions data may be managed and set at the connection server 14and associated database 52, as one option, when a connection server isemployed in the system. However, the preferred implementation currentlyis to manage subscription data at the user modules and device modules.Updates of subscription information are detected by the device modulewhether performed at the location of the device module, user module orconnection server. When updates are detected by a device module, thedevice module sends the update information over the network, optionallythrough a connection server and to all user modules that subscribe toeach file that has been updated with regard to subscriptions. As long asa subscription is active for a user module, that user module can trustthat the cached data at the location of the user module is current,given the automatic updating facilities described above. Therefore, theuser of the user module/computer does not have to be concerned withsynchronization, or checking file properties to determine which versionof a file is the latest. Also, since updates of files are sent on thebasis of Delta information (which may further be compressed, as notedabove) this provides superior performance, particularly when the usermodule is connected via a low bandwidth connection or is experiencingsignificantly high latency of response when communicating over thenetwork. Decision as to which files to be subscribed to can be made bythe user of the system and/or by a performance optimization algorithmwhich can be computed on any of the computer systems to be used by theuser when using the present system.

The present system is persistent and therefore supports user modulesthat may not always be able to communicate (i.e., over the network) withthe device module. Each user module both file data and managementinformation such as usernames, authentications, device information,permissions, other subscription information, and other information thatmay be used in managing communication with remote devices, in cachememory. Changes in any of this information that are made by the user atthat user module location while that user module is unable to connectwith the network are stored locally in cache. Changes that can be storedinclude all normal drive operations, thus the interface can supportnormal functionality. Once the user module is able to re-establish aconnection to the network, updates (including any updates to file dataas well as updates to management information) may be automaticallytransmitted from that particular user module to the appropriate devicemodule(s). In turn, the updated device module(s) then update any otheruser modules that are affected by the changes. Hence when the user workslocally on a file, the user does not need to be concerned with managingthe transmission or other movement of files back and forth between theuser module (local computer) and the device module (remote storagedevice), as the system manages this automatically for the user.

The system may support access and control of multiple types of devicesthat may include but are not limited to data access to remote storagedevices as described above; viewing of video from remote cameras andcontrol of camera behavior; access to and control of home video and/oraudio equipment, including digital video recorders, VCR's stereos,televisions and the like, home appliances, electronic equipment invehicles, printers, fax machines and other office equipment, personalelectronic equipment, including MP3 players and other portable devices,and desktop interaction with remote computers, which includes but is notlimited to desktop viewing, keyboard control, mouse control, clip-boardtransmission, sending of special key-strokes (e.g. Ctrl-Alt-Del).

Thus, the present system supports remote viewing of video from camerasand also enables the control of camera behavior, including, but notlimited to panning, title and editing, zooming, resolution control,aperture control, focusing, frame rate control and image qualitycontrol, as well as standard play, record, stop, start, on, off, fastforward, rewind, pause, slow and fast motion operations, etc. Using thepresent system for camera control, a user may trigger a remote camera tobegin taping/recording, or set security cameras to turn on and/or beginrecording when triggered by a motion detector, for example. Images takenby one or more remote cameras may be viewed in real time on the user'slocal web browser and/or stored to the user's local hard drive. Ofcourse, the user may also control such images to be stored to a remotehard drive, e.g. a camera controlled by a local computer may be set tostore images on remote storage device associated with another computerin a remote location.

A user interface 1400 may also be implemented to allow managing ofmultiple devices, including, but not limited any of the devicesdescribed herein. By implementation of the user interface 1400, a usermay see a tree diagram, which shows different computers, and the devicesthat are connected to each computer and accessible to the user, as notedabove. Icons for different types of devices allow types of devices to beeasily observed, and icons may also be used to communicate device statusvisually and/or audibly.

A user interface provided by the present system facilitates themanagement of multiple remote devices. The user interface may display atree diagram which shows different computers that are accessible usingthe present system, i.e., which contain at least one file to which thelocal computer has access to, as well as each remote device which isconnected to each of the computers shown which is accessible (e.g.,which the user of the user interface has permissions to), as well asdesktops that a user may have viewing access to or remote controlprivileges thereto. Icons which visually and/or audibly distinguishdifferent types of remote devices may be provided, so that the user canreadily and easily visually distinguish between these types when viewingthe user interface. For example, unique icons may be provided for remotestorage device, remote camera, and desktop sharing, respectively.Optionally, the icons may also visually indicate and communicate devicestatus.

The user interface also facilitates permission management, as alsonoted. Each type of device can include multiple permissions levels.Grants are assignable to a device by a user with administrativeprivileges to that device. A grant is created to allow a user module tohave associated permissions on one or more device module. A user modulehaving a grant of permission to a device module may then perform asubscription to data stored remotely and associated with/controlled bythat device module. A subscription is a real time transaction betweenthe user module and device module, as described above. Users may viewthe permissions that they have been granted via the user interface.Permission and grants may be stored in database 52, as part of thedevice management information stored, when a connection server 14 isincluded as part of the system. When a connection server 14 is notincluded, permission and grant data may be stored locally in the storagedevices of each computer used in the system. However, authentication maystill be performed at a third party, public address, such as a securityserver addressable over a wide area network. This avoids the necessityof having to verify each computer as a trusted server on the wide areanetwork, since only the publicly addressable server will need to beverified in this case, and the publicly addressable server thenauthenticates each computer participating in a secure network for eachsession, respectively. In either case the user interface has access tothe stored data regarding permissions and grants. Changes in permissionsand grants may be distributed globally throughout the system by theserver 14, or in cases where connection server 14 is not employed, byupdates through a user module to affected device modules, and subsequentglobal updating to all other user modules via the updated devicemodules, similar to the update procedures for file data described above.Alternatively, changes to permissions and grants data may be updated ata device module and changes can be sent directly to all affected usermodules. As noted above, each device (local or remote) may have multiplesubscriptions which allow various levels of access to various usermodules. Each user module may have one or more permissions with regardto one or more device modules.

The software of the system may be deployed as a service on MicrosoftWindows® or other common operating system, and may be set toautomatically start upon start up of the operating system. Software forsystem may alternatively be run as an applet rather than a service, soas not to require full installation on a particular computer.Optionally, this service or applet may also automatically connect toconnection server 14, or directly to one or more other computers or mayconnect through a web browser, so that a user has instant access toremote devices when needed. Thus, the present software can run in thebackground. Optionally, a tray icon may be provided on the desktop ofthe operating system, which the user can click on for easy access to thepresent system, whether it is running in the background or not. Furtheralternatively, the present system may be run as an applet rather than aservice and in this case, does not require full installation on a usercomputer.

The software of the system may allow integration or be integrated with avoice over internet protocol (VOIP) service for operation therewithduring teleconferencing. The software may be integrated with a webbrowser, such as Microsoft's Internet Explorer® or Netscape Navigator®,or the like. Further, integration with chat software may be performed tofacilitate file sharing during a chat session and/or remote operation ofdevices or the like. The software may be integrated with a whiteboardfor direct input through the whiteboard into a network for conferencingpurposes, thereby removing the need to train a video camera on thewhiteboard. Likewise, video recording may be performed whileconferencing. For example, a video stream may be recorded on one of theparticipant's computers or on a remote computer that is connected to thevideo camera or the network so that a video stream can record thesession or portions thereof, such as a PowerPoint® or otherpresentation. It should be noted that recoding of both or either of thevideo streams coming from the video camera and the remote desktop may berecorded. Still further, an API may be provided for connectivity toother external devices or applications.

The present invention provides many advantages over currently existingsystem for remote data access. For example, local access to pictures,such as jpeg images, mpeg clips and the like may be provided by thesystem. Thus, for example, a user could subscribe or grant permission tohis parents to access a portion of his home computer drive containingpictures of the parents' grandchildren. Upon logging into the presentsystem at their own home or some other location remote from the computerdrive containing the pictures, the grandparents (i.e., user module withgrant and permission) have one or more icons displayed on their userinterface for access to one or more files containing the pictures of thegrandchildren located on the remote computer or in the local cache ofthe computer used by the grandparents. By clicking on one of theseicons, the grandparents can view the pictures contained in the remotedevice. The pictures are initially sent to the user module in compressedform, for example. By this arrangement, the user is relieved of theextra time and expense that is currently required to upload pictures toa personal website hosted by a web-hosting company, and the grandparentscan also access the pictures more easily, since they don't have to logonto such a personal website or go through any other special proceduresto download the pictures. Rather, they simply click on an icon that isalready appearing on their user interface, and the picturesautomatically open up on their display. Optionally, the grandparents inthis example may choose to store one or more pictures to their localdevice, such as a local hard drive or the like.

As noted above, the system may also provide remote access to music,whereby music files that are permitted to the user show up on thedisplay of the user's computer and may be selected to be played from theremote storage device on which the selected music is located, or fromlocal cache if the selected music has already been downloaded locally.Selective transmission of the file from a remote location allows theuser to begin listening to the music before the entire file has beendownloaded.

As another example, the system may provide local access to remoteprinters. For example, by connecting printers (such as by wirelessconnection or CATV wired connection, for example) to one ore more usercomputers, the system provides a peer-to-peer connection between eachuser computer and all printers that may be accessed by that usercomputer, without the need for an access point. By connecting accordingto the present methods, a user of a user computer may visualize an iconand/or text or other indicator on the user computer for each printerthat is accessible, and may print to any of these printers, directlyfrom the local user computer. Any device, computer, or data can becompletely controlled in the network, even when the local computer andthe device computer or data being controlled are behind differentfirewalls. The remote computers may be connected via a local networkand/or wide area network. Among the many advantages provided by thisarrangement, an extension of the file/picture sharing example discussedabove would allow the user to print a photograph directly to the remoteprinter located at the grandparent's remote location, without the needto email the photo, or to require any active participation of thegrandparents whatsoever.

Such capabilities may be provided to any of the remote devices discussedherein. As a further example, a digital video recorder may be connectedto other remote digital video recorders for file sharing, even whenvarious recorders are located behind different firewalls. Also, if onerecorder has recorded only a portion of an event, another recorder maytransmit a Delta file to complete the recording. A user computerconnected to one or more digital video recorders or other video/audiodevices may also direct recording and transmission of recordings amongremote devices. Additionally, display devices may be connected to theabove-described computer network and may be selected in a similarfashion as the printers described above. In this manner, a user may, forexample, display pictures or video on a large display in the livingroom, while the data is located on another connected computer in thebedroom. Also, a user may operate a remotely located digital videorecorder or other video player to play back a video locally on theuser's local computer.

The present invention provides many advantages over currently existingsystems for remote data access. For example, local access to pictures,such as jpeg images, mpeg clips and the like may be provided by thesystem. Thus, for example, a user could subscribe or grant permission tohis parents to access a portion of his home computer drive containingpictures of the parents' grandchildren. Upon logging into the presentsystem at their own home or some other location remote from the computerdrive containing the pictures, the grandparents (i.e., user module withgrant and permission) have one or more icons displayed on their userinterface for access to one or more files containing the pictures of thegrandchildren located on the remote computer and in the local cache ofthe computer used by the grandparents. By clicking on one of theseicons, the grandparents can view the pictures contained in the remotedevice. The pictures are initially sent to the user module in compressedform, for example. By this arrangement, the user is relieved of theextra time and expense that is currently required to upload pictures toa personal website hosted by a web-hosting company, and the grandparentscan also access the pictures more easily, since they don't have to logonto such a personal website or go through any other special proceduresto download the pictures. Rather, they simply click on an icon that isalready appearing on their user interface, and the picturesautomatically open up on their display. Optionally, the grandparents inthis example may choose to store one or more pictures to their localdevice, such as a local hard drive or the like.

The present system may also be optionally employed to performsynchronization of files among a user's multiple computers. Referringback to the operations described above, the system is designed toautomatically update at least the “master copy” of a file at a remotelocation (i.e., the file at the location of the device module from wherethe file was accessed by the user module) as the user makes changes tothe file locally on the computer associated with the user module.However, the user may be provided with alternative synchronizationoptions by the present system. For example, the user may choose toalways synchronize all copies of a file, wherein, whenever the usermakes a change to that file locally, at any location, then all of thedevices which subscribe to that file are automatically updatedimmediately. This option, and all others described below, may be set toapply to only one file or any number of files to which the user moduleis subscribed. At the device module end, such options may be chosen toapply in the same way. Another synchronization option provided by thepresent system is one in which a local copy of the file is stored on thelocal computer, and changes with at least one other remote device areautomatically synched.

The present system may also be employed to use one computer at onelocation to run files that are on one or more remotely located computersor storage devices associated with remote computers. This can be veryuseful when an application is loaded on only one computer, but is neededfor files in other locations, for example. As one example, a user mayhave virus checking software on the local computer, and access filesremotely located on storage devices and associated with computers atthree other remote locations. With the use of the present system, theuser can virus check all files in all four locations using the localvirus check application. Of course, this feature is not limited to viruschecking, but applies to locally running any application with respect toremotely located data.

The features of the present invention can also be employed as a backupservice, as already noted above. A device module may be designated as acentral storage for backup services, so that a backup copy is alwayssynched at a specified device location. All of the foregoing options mayalso be applied to data files such as email, address book files,business cards, and the like, so that a user can be ensured thatcontacts, telephone numbers and the like are always up to date on allthe user's machines.

The synchronization and backup functions provided by the present system,like the remote access and updating functions, can be set to functionaccording to different options. For example, synchronization or backupaccording to any of the above-described schemes can be set to run onstartup of a local computer, power down of the local computer, or ondemand (i.e., at the user's request or command). A synchronization orbackup operation may be paused and resumed, since the present system ispersistent. Synchronization and backup are based on the size of the lastmodified user preference, therefore these processes are differentialupdates done at the file level of granularity, which reduces bandwidthrequirements, since a significant portion of the data need not betransmitted. Hence, these operations provide significant advantages overcurrently available products, since there is no need to copy the filesfrom one location to another.

As noted above, synchronization and/or backup processes may be performedas point-to-multipoint operations, i.e., synchronization and/or backupmay be performed with regard to all computers connected and subscribedsimultaneously. Alternatively these processes may be set as to selectivecomputers, which may be any subset of the full set of computers that areconnected and subscribed. Thus, in the example provided above withallowing access of a user's pictures by his parents, the user may setthe system so that when the user saves pictures to his local computer,in a file that has been granted permission to his parents, the systemsimultaneously also saves the pictures to the parents' hard drive(remote device) Further, there is granular control of these processes,as a set or subset for one file may be different from a set or subsetspecified for another file. Thus, continuing the example, although theuser may also share a file containing recipes with his parents, the usermay choose to merely allow this parents access to the recipe file, butnot automatically save new recipes directly to the parents' hard driveeach time the use saves a new recipe to his local storage device.

Another mode for performing backups allows a user to set the system sothat a first time a backup is performed, it is stored on a first remotedevice. On the next performance of a backup, the data can be stored to asecond remote device, which may be connected to the same remote computeror a different remote computer. A third backup could be performed onstill a different remote device, with the fourth backup cycling back tothe same remote device where the backup was performed during the firstbackup. Any number of remote devices can be employed in this type ofbackup mode, with any order and any number of remote computers, asdesired to be set by the user.

Another benefit of the systems ability to provide granular settings, isthat updates, synchronizations and backups can be set to ensuresegregation of files. For example, the system can be set to ensure thatfiles identified as business files will never be stored on a homecomputer and files designated as personal files (such as the picturesdescribed above, for example) will never be stored on a work computer.This ensures that business files and personal files can be keptcompletely separate without the user having to take efforts to ensurethat the file he is currently working on is correctly routed each timethe user is finished using the file. This feature does not require theuser to copy business files to a “briefcase” or other special folder asan aid to segregating business files from personal files, but isautomatic, once the settings have been put in place.

Third party access to files can be centrally controlled with the presentsystem, since management information such as permissions can be set atthe DataClient. The present invention provides a viable alternative tothe use of VPN's since it provides a “tunnel-through” capability thatcan be used even when two or more computers or networks are locatedbehind firewalls having different settings, is also useable by computersthat connect to the network via wireless, with no firewall and can stillprovide secure communications, and is therefore useable from anywhere inthe world to send and receive secure, encrypted information. Further,the system does not require a complicated setup to a fixed location, incontrast to VPNs, which may require extensive hardware and/or softwaresetups. With the present invention, there is no VPN information thatneeds to be set up. All that is required is to set up device modulefiles to allow a specified user or users access to specified files onthe DataClient computer. The owner or other authorized user of theDataClient/device module files can set up permissions by merelyspecifying which user name(s) to grant permission to or by assigning alogin number and a password (referred to as the “adhoc method”) to auser and then clicking on particular files or directories to indicatewhich files can be accessed by a particular user and which files cannot.The user (UserClient/user module) only need to log into the Access andControl System (connection server 14), download self-executing softwareto operate the system, and access the DataClient files using his or heruser name or the login number and password (in the case of the adhocmethod) provided by the owner of the DataClient files. Optionally, thismethod may be additionally or alternatively configured to requireconfirmation of biometric data such as fingerprint or retinal scan datafrom the user. Icons representing the files that can be accessed arethen automatically displayed on the user interface of the UserClient,and the user simply double clicks on these to access the DataClientfiles that the user wishes to obtain access to.

With the ability to define granular settings, command filtering issupported. Thus, for example, the DataClient owner can set files thatare to be accessed with specificity. For example, even within aparticular folder, the owner can set certain particular files for accessby one or more UserClients and decide not to allow access by anyUserClients to certain other files within the same folder. Once certainfiles such as folders or one or more directories have been set forparticular access, it becomes an easy matter to simply drag and drop anadditional file into such folder or directory, wherein that fileautomatically takes on the settings assigned to the folder or directorythat it was dragged to. Copying or cutting and pasting to such a folderor directory obtains the same results. Searching of the contents of suchfolder, directory or even individual files may also be performed.Command filtering allows central management of file access permissions,such as by IT managers, and the like.

During an active subscription, actions taken on a file by a user who hasaccessed a file from a remote storage device may be observed by thecomputer associated with that remote storage device. This functionalitymay be usefully applied as a remote observation system, such as forchild protection functionality. For example, a parent or teacher mayprovide a child or student access to files on the parent or teacher'sstorage device(s). When the child is using such files (i.e., activelysubscribed), the parent or teacher can monitor which files the child isaccessing and what is being done with those files. Optionally, theteacher or parent can monitor the usage of the remote computer the childis working on in real time. Remote observation may be configured to beunobtrusive and not visible to the child, or it may be configured suchthat the child is aware that the remote real-time monitoring function isenabled. Thus, for example, a teacher may determine whether a student isdoing homework or playing video games. Of course, additionally, thesystem may be used to prevent a child's access to selected files.Additionally, the system may be configured to send a log file of theuser's activities to the computer associated with the remote storagedevice from which a file or files were accessed, so that the user of thecomputer having the files that were accessed is notified of theactivity. The log file provides an audit trail that is searchable toprovide monitoring details. The local file may be as detailed as toprovide each keystroke that was executed. Alternatively, the system mayalert a remote observer, such as a teacher or parent, for example, thatcertain activities are being initiated on the remote computer by havingthe remote computer send out an email or phone message to the parent orteacher, or other remote observer. The use of a warning signal isparticularly useful for the remote parent or teacher, as this provides atime specific message as to when remote activity takes place.

As described above, the present system functions so that a user can workwith remote devices/data as if the user were working locally on thecomputer to which such remote device is locally connected to. Whensaving data, the user save that data to the remote device from which thedata file was originally accessed, as the system makes it appear thatthe user is locally saving the data. The system is extremely efficientand supports encrypted transmissions, multiple users, on demand andscheduled tasks, and functions even with computers located behindfirewalls having different, potentially incompatible settings. Inaddition to hard drives and other remote data storage devices, thepresent system functions to control remote devices such as cameras,printers, fax machines, scanners, home video and/or audio equipment,home appliances such as refrigerators, furnaces, air conditioning units,toasters, water heaters and any other devices operatively connected to amicroprocessor. Synchronizations/backups of files as well asapplications containing data (e.g., Microsoft Outlook®, Project) may beperformed. Antivirus software may be updated on a remote device from alocal operation. The system further supports presentation sharing,application sharing and collaboration in parallel on a file.

Varying security levels and/or permissions may be set granularly, downto the single file level.

The present system facilitates device integration, as a host ofdifferent devices may be remotely controlled from a single, or multipleaccess points at any global locations that have network access. Forexample, home appliances which are locally controllable via one or moremicroprocessors may be remotely controlled as long as thosemicroprocessors have network access. Similarly, cameras (includingsecurity cameras), home entertainment devices, and other “smart house”devices may be remotely controlled using the present system. Forexample, content stored by a VCR, DVR or the like can be shared usingthe present system. Also, the ability to set permissions with highgranularity allows a user to prevent sharing of files containingcopyrighted subject matter.

The present system is also applicable to factory automation. Forexample, many current machines store operating information and otherdata in a local storage area. To gain access to such data, it istypically necessary to download it to a portable storage device, ifaccess is required at another location, or to format such data to beemailed or FTP's to another location. Using the present invention, suchdata can be accessed directly from another computer after theappropriate permission settings have been put into place, without theneed for a file transfer or email.

Any devices or appliances which are connectable to a computer via USB,serial or parallel port connection, Firewire® (IEEE 1394), Bluetooth®,or other hard wired or wireless connection can also be remotely accessedand controlled according to the present system.

The present invention provides many features and functions which havenot theretofore been available in remote desktop applications, asdiscussed above. Access to the file systems of remote storage devices isprovided, along with full functionality for using the file systems justas you would if you were locally accessing the file system. Moreefficient transfer of files is facilitated in that Delta and/or InverseDelta files are all that is required to be transmitted once a file hasalready been downloaded and then modified. Additionally remote desktopcontrol may be performed simultaneously, with multiple remote computersand/or remote devices, as opposed to prior art systems that are limitedto one-to-one connections. The control that is provided allows fullfunctionality and control of a remote storage device, includingsearching capability. Uploading and downloading can be performed in adistributed manner, from multiple locations, so that centralized storingof all data, whether business, or personal is not required. Filesharing, including photos, videos and music are facilitated. Backup ofdata may be carried out centrally from one computer, with regard tomultiple remotely located devices which may be behind differentfirewalls. The backups may be performed simultaneously.

While the present invention has been described with reference to thespecific embodiments thereof, it should be understood by those skilledin the art that various changes may be made and equivalents may besubstituted without departing from the true spirit and scope of theinvention. In addition, many modifications may be made to adapt aparticular situation, material, composition of matter, process, processstep or steps, to the objective, spirit and scope of the presentinvention. All such modifications are intended to be within the scope ofthe claims appended hereto.

1. A method of remotely accessing data from a remote storage device,said method comprising: initiating a first firewall compliant connectionbetween a first computer located behind a first firewall in a firstlocation and a public server; initiating a second firewall compliantconnection from said public server to a second computer located behind asecond firewall in a second location; requesting data at a user moduleexecuting on the first computer via the first firewall compliantconnection from a remote storage device associated with said secondcomputer in said second location; searching local cache of the usermodule to determine whether the requested data is available and valid;when the requested data is available and valid, displaying a filestructure, on a display of said first computer, of data stored on saidremote storage device based upon information received from the usermodule, the user module configured to emulate a file server executing ona remote computer; when the requested data is not available and valid,sending a request to said second computer for establishing an activesubscription, establishing said active subscription, and displaying afile structure, on a display of said first computer, of data stored onsaid remote storage device based upon information received from the usermodule, the user module configured to emulate a file server executing ona remote computer; and enabling interaction with the file structure byreceiving at the user module communications formatted for the emulatedfile server from an operating system of the first computer andresponding to the communications with file structure information, theinteraction with the file structure at the first computer being the sameas an interaction that a user of the second computer would have with thefile structure locally on a display of said second computer.
 2. Themethod of claim 1, further comprising searching said data stored on saidremote storage device from said first computer via the first and thesecond firewall compliant connections.
 3. The method of claim 1, furthercomprising requesting a previous version of a file stored in said remotestorage device at the first computer and accessing the previous versionof the file.
 4. The method of claim 3, further comprising receivinginformation associated with the previous version of the file at thefirst computer as at least one of a Delta file or an Inverse Delta file.5. The method of claim 1, wherein the user module implements ServerMessage Block or Common Internet File System server functionalities. 6.The method of claim 5, wherein enabling interaction with the filestructure includes intercepting an Internet Protocol packet associatedwith a virtual Internet Protocol address and port number correspondingto the emulated file server, and responding to the Internet Protocolpacket with the file structure information using Server Message Block orCommon Internet File System functionalities.
 7. The method of claim 1,further comprising requesting the file structure information at the usermodule from the remote storage device, and caching the file structureinformation on the first computer, wherein the user module responds tothe communications from the operating system of the first computer withcached file structure information.
 8. The method of claim 1, furthercomprising sending a request from said user module to said remotestorage device for the requested data when it is determined that therequested data is not available and valid in said local cache of saiduser module.